我正在设置一个绑定(bind)到 NSTreeController 的 NSOutlineView,该 NSTreeController 填充有 NSTreeNode
实例,后者使用 [NSTreeNode treeNodeWithRepresentedObject:...] 附加了我的自定义 NodeData 对象
。
大纲 View 渲染得很好,所有数据都按预期存在,一切都很好。
现在在大纲 View 的委托(delegate)中,我尝试通过
outlineView:willDisplayCell:forTableColumn:item:
方法。
但是,item
参数不会返回我的自定义数据!
id stuff = [item representedObject];
生成 NSTreeNode
类的实例,其中 item 是 NSTreeControllerTreeNode
。
这到底是怎么回事?
根据所有文档和示例代码,我可以发现representedObject调用应该给我返回我在构建树时填充到NSTreeNode中的NodeData
对象..
完全无能为力,因为我似乎是唯一遇到这个问题的人,所以我一定在某个地方做了一些非常愚蠢的事情 - 但我看不出代码有什么问题。
使用setContent:[dataSourcesillyHack]以编程方式填充树 Controller
这个琐碎的内容显示了相同的行为:
- (NSMutableArray *) sillyHack
{
NSMutableArray *nodeArray = [NSMutableArray array];
NodeData *scaleTypeListNode = [[NodeData alloc] initWithName:@"123"];
NSTreeNode *scaleTypeListTreeNode = [NSTreeNode treeNodeWithRepresentedObject:scaleTypeListNode];
[scaleTypeListNode release];
[nodeArray addObject:scaleTypeListTreeNode];
return nodeArray;
}
感谢任何帮助。
最佳答案
您应该使用您自己的数据实例填充 NSTreeController,而不是 NSTreeNode。
关于objective-c - NSOutlineView+NSTreeNode : where's my custom data gone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166382/