NSOutlineView中的非唯一项目

时间:2011-12-18 03:45:12

标签: cocoa unique nsoutlineview

根据Apple's documentationNSOutlineView要求视图中的每个项目都是唯一的,但是,如果这实际上不符合业务要求会怎样?特别是,你如何显示这样的东西

Item A
  -> Item B
      -> Item E
  -> Item C
Item D
  -> Item B
      -> Item E
  -> Item F

注意项目B及其子项多次出现在树中。当然,应用程序会进行检查以确保不会发生循环循环,因此树是有限的。

是否会对NSOutlineView帮助进行子类化?或者是否需要创建一个全新的视图类?

1 个答案:

答案 0 :(得分:1)

您可以使用NSIndexPath对象作为大纲视图中的项目。例如,索引路径(0,0)将引用项目A的项目B,而索引路径(1,0)将引用项目D的项目B.

您将无法使用Bindings;你需要实现一个数据源。

您的数据源方法需要使用索引路径从模型中获取相关的实际模型对象。我建议制作一个方法,并使用所有数据源方法中的方法。

此外,您需要正确处理删除对象:如果删除模型数组中间的对象,则必须删除末尾的索引路径,中间,并告诉视图重新加载其间的所有项目(索引路径)。