2012-09-01 66 views
0

我有一些我想在NSOutlineView中呈现的分层数据模型。我将树控制器绑定到大纲视图以提供数据并处理对其他视图的选择和绑定。是否可以将NSTreeController绑定到NSOutlineViewDataSource?

但是,我只想在我的模型中只显示部分的到大纲视图。 (我的层次结构中的每个对象都有一个子对象数组,但我只想让这些子对象中的一些显示为树中节点的子节点。)我希望我可以将过滤器谓词附加到树控制器,但似乎NSOutlineView不支持过滤器谓词。

认为这个设计需要一个NSOutlineViewDataSource来过滤我的数据模型,并绑定一个NSTreeController到数据源和大纲视图。但是,树控制器(内容数组,内容对象,内容集等)中的绑定插口都不适合绑定数据源。

任何想法?在此先感谢...

回答

0

您可以尝试通过数组控制器将数据馈送到您的子对象数组。

下面是我该怎么做。覆盖您表示的对象中的访问器方法,并从您的数组控制器中返回一个已过滤的数组。

0

一般来说,NS [Outline | Table] ViewDataSource和Cocoa Bindings是一个“或/或”的选择。混合这些方法,虽然也许不严格不可能,可能会导致不可预知的结果。

您提到将过滤器谓词绑定到大纲视图本身而不是特定节点,所以我推测所有节点的一个过滤器谓词可能“足够好”。如果是这种情况,那么一个解决方案是在您的模型上展示第二个儿童自动贩卖财产,也许是filteredChildren,并告诉NSOutlineView使用它来访问儿童,而不是您的默认/完整儿童自动贩卖财产。如果您需要拖放重新排序等功能,这种方法可能被证明是不平凡的,但无论如何,应该很容易探索这种方法。

如果您需要针对每个节点使用不同的过滤器,或者过滤器动态变化,那么这个任务可能会跨越成为实施NSOutlineViewDataSource(以及使用Cocoa绑定的可能候选人)的一个很好的候选人。 )

相关问题