Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 是否可以将NSTreeController绑定到NSOutlineViewDataSource?_Cocoa_Cocoa Bindings_Nsoutlineview_Nstreecontroller - Fatal编程技术网

Cocoa 是否可以将NSTreeController绑定到NSOutlineViewDataSource?

Cocoa 是否可以将NSTreeController绑定到NSOutlineViewDataSource?,cocoa,cocoa-bindings,nsoutlineview,nstreecontroller,Cocoa,Cocoa Bindings,Nsoutlineview,Nstreecontroller,我想在NSOutlineView中介绍一些层次化数据模型。我将树控制器绑定到outline视图,以提供数据并处理选择和绑定到其他视图 但是,我只想在outline视图中显示模型中的部分数据。(我的层次结构中的每个对象都有一个子对象数组,但我只希望其中一些子对象显示为树中节点的子节点。)我希望我可以将筛选器谓词附加到树控制器,但NSOutlineView似乎不支持筛选器谓词 我认为这种设计需要一个NSOutlineViewDataSource来过滤我的数据模型,以及一个绑定到数据源和outline

我想在NSOutlineView中介绍一些层次化数据模型。我将树控制器绑定到outline视图,以提供数据并处理选择和绑定到其他视图

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

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


有什么想法吗?提前感谢…

您可以尝试通过阵列控制器将数据馈送到子对象阵列


我会这样做的。覆盖所表示对象中的访问器方法,并从数组控制器返回一个经过筛选的数组。

通常,NS[Outline | Table]ViewDataSource和Cocoa绑定是一个“非此即彼”的选择。混合这些方法,虽然可能并非绝对不可能,但可能会导致不可预测的结果

您提到将筛选器谓词绑定到Outline视图本身,而不是绑定到特定节点,因此我猜测所有节点的一个筛选器谓词可能“足够好”。如果是这样,那么解决方案之一就是在您的模型上公开第二个children vending属性,可能是
filteredChildren
,并告诉NSOutlineView使用它来访问儿童,而不是您的默认/完整儿童自动售货属性。如果您需要像拖动重新排序这样的功能,这种方法可能会被证明是不平凡的,但不管怎样,探索这种方法应该很容易

如果您需要为每个节点使用不同的筛选器,或者如果筛选器动态更改,则此任务可能会成为实现NSOutlineViewDataSource的一个很好的候选者(而使用Cocoa绑定的候选者则很差)