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”(类型为
)。“headersArray”是CommonListData项的数组NSArray
具有与treeController的arrangedObjects的“内容”绑定NSOutlineView
- 基于视图的大纲视图是在Interface Builder中设计的,每个单元视图都有许多元素。每个元素(标签、图像等)都具有到
的“值”绑定,并具有相关的objectValue.xxx模型键路径NSTableCellView
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
中的内容有点困惑。让我来解决这个问题,然后再回答看看它是否有效。