我正在建立一个绑定到NSTreeController的NSOutlineView,该NSTreeController用NSTreeNode实例填充,后者使用[NSTreeNode treeNodeWithRepresentedObject:...]附加了我的自定义NodeData对象。
大纲视图呈现得很好,所有数据都在预期的位置,都很好。

现在在大纲视图的委托中,我试图通过
outlineView:willDisplayCell:forTableColumn:item:方法。

但是,item参数不会给我我的自定义数据!

id stuff = [item representedObject];


产生类NSTreeNode的实例,其中item是NSTreeControllerTreeNode

到底他妈发生了什么?
根据所有文档和示例代码,我发现在构建树时,presentatedObject调用应该返回我塞入NSTreeNode的NodeData对象。

我似乎是唯一遇到此问题的人,这完全是一无所知,所以我必须在某个地方做一些非常愚蠢的事情-但我看不出代码有什么问题。

使用setContent:[dataSource sillyHack]以编程方式填充树控制器
这个琐碎的内容显示了相同的行为:

- (NSMutableArray *) sillyHack
{
   NSMutableArray *nodeArray = [NSMutableArray array];

   NodeData *scaleTypeListNode = [[NodeData alloc] initWithName:@"123"];
   NSTreeNode *scaleTypeListTreeNode = [NSTreeNode treeNodeWithRepresentedObject:scaleTypeListNode];
   [scaleTypeListNode release];

   [nodeArray addObject:scaleTypeListTreeNode];
   return nodeArray;
}


任何帮助表示赞赏。

最佳答案

您应该使用自己的数据实例而不是NSTreeNode填充NSTreeController。

关于objective-c - NSOutlineView + NSTreeNode:我的自定义数据哪里去了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9166382/

10-14 20:15