【问题标题】:NSOutlineView+NSTreeNode: where's my custom data gone?NSOutlineView+NSTreeNode:我的自定义数据去哪儿了?
【发布时间】:2012-07-11 01:31:43
【问题描述】:

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

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

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

id stuff = [item representedObject];

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

这到底是怎么回事? 根据所有文档和示例代码,我可以找到代表对象调用应该给我 NodeData 对象,我在构建树时填充到 NSTreeNode 中..

完全一无所知,因为我似乎是唯一遇到此问题的人,所以我一定在某处做了一些非常愚蠢的事情 - 但我看不出代码有什么问题。

使用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;
}

任何帮助表示赞赏。

【问题讨论】:

    标签: objective-c cocoa cocoa-bindings


    【解决方案1】:

    你应该用你自己的数据实例来填充 NSTreeController,而不是 NSTreeNode。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2011-07-02
      相关资源
      最近更新 更多