Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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

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
Macos 具有手动Cocoa绑定的NSOutlineView_Macos_Cocoa_Cocoa Bindings_Nsarraycontroller_Nsoutlineview - Fatal编程技术网

Macos 具有手动Cocoa绑定的NSOutlineView

Macos 具有手动Cocoa绑定的NSOutlineView,macos,cocoa,cocoa-bindings,nsarraycontroller,nsoutlineview,Macos,Cocoa,Cocoa Bindings,Nsarraycontroller,Nsoutlineview,我有一个绑定到NSTreeController的NSOutlineView。详情如下: treeController具有类模式和CommonListData作为类名,该类名具有“children”属性 treeController还将“内容数组”绑定到文件所有者的“headersArray”(类型为NSArray)。“headersArray”是CommonListData项的数组 NSOutlineView具有与treeController的arrangedObjects的“内容”绑定 基于

我有一个绑定到
NSTreeController
NSOutlineView
。详情如下:

  • treeController具有类模式和CommonListData作为类名,该类名具有“children”属性
  • treeController还将“内容数组”绑定到文件所有者的“headersArray”(类型为
    NSArray
    )。“headersArray”是CommonListData项的数组
  • NSOutlineView
    具有与treeController的arrangedObjects的“内容”绑定
  • 基于视图的大纲视图是在Interface Builder中设计的,每个单元视图都有许多元素。每个元素(标签、图像等)都具有到
    NSTableCellView
    的“值”绑定,并具有相关的objectValue.xxx模型键路径
设置相当简单,在添加和删除对象时都可以正常工作。但问题是,在大纲视图中添加或删除项目时,它不使用任何
NSOutlineView
/
NSTableView
动画。如果我向treeController添加或删除任何元素,或者直接向headersArray的子对象添加或删除任何元素,那么表将重新加载自身。我不确定这是否是Cocoa绑定的限制

在任何情况下,我考虑是否可以禁用所有绑定并手动完成。唯一的缺点是,
NSOutlineView
单元格视图上有复杂的元素,我不想将视图元素映射到代码中的数据。理想情况下,它应该将绑定保存在
NSTableViewCell

所以我的问题是:
是否可以在
NSTableCellView
中保留Interface Builder中的绑定,但不将内容绑定到treeController?或者是否有绑定“arrangedObjects”的替代方法,以便从
NSTreeController
添加和删除数据不会触发对UI的更新


这将有助于对绑定进行更多的控制,这样我就可以正确触发动画,而不是让它在每次更新时都跳转。

我相信单元格视图中视图的绑定独立于大纲视图内容的绑定。无论大纲视图是否使用绑定,它最终都会设置单元格视图的
objectValue
属性。只要是以兼容KVO的方式(事实上是这样)完成的,对该属性的任何绑定都可以工作。

谢谢。我不知道该怎么做。我删除了大纲视图内容与树控制器“arrangedObject”的绑定。我实现了所需的委托方法:
outlineView:numberOfChildrenOfItem:
outlineView:child:ofItem:
、和
outlineView:viewForTableColumn:item:
,并使tableview正确显示所有行,但tableviewCell中没有显示具有绑定的标签(直接在viewForTableColumn:item:中实现的标签显示得很好)。有什么想法吗?我猜
objectValue
没有得到数据?你实现了
-outlineView:objectValueForTableColumn:byItem:
?没有,可能是这样!我对
outlineView child:ofItem:
outlineView:objectValueForTableColumn:byItem
中的内容有点困惑。让我来解决这个问题,然后再回答看看它是否有效。