我正在建立一个绑定到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/