objective-c - NSOutlineView+NSTreeNode : where's my custom data gone?

标签 objective-c cocoa cocoa-bindings

我正在设置一个绑定(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/

相关文章:

objective-c - 基于 NSDocument 的应用程序窗口位置

swift - 使用 NSDictionaryController 和 Swift 时验证用户默认值

iOS清空请求队列

ios - 在 Sprite Kit 中创建按钮的正确方法?

objective-c - 使用 OS X 的 Storyboard初始化另一个窗口

objective-c - Cocoa 跨窗口中的多个 View Controller 进行绑定(bind)

objective-c - NSTableView 和 NSMutableArray 之间的 Cocoa 绑定(bind)拒绝更新

ios - 如果用户将 "Set Automatically"设置为关闭,如何检查正确的当前时间

iphone - 确定从应用程序内购买应用程序的字符串。(先有鸡还是先有蛋)

macos - 从 Mac OS X 应用程序打印 PDF/Doc/Docx?