我有一个自定义<NSOutlineViewDataSource>
,我会NSOutlineView
更新selectionIndexPaths
属性。我无法让bind:toObject:withKeyPath:options:
正确绑定。基本上,我需要我的数据源来知道选择了哪个项目。
当我绑定到selectionIndexes
(由NSTableView声明)或selectionIndexPaths
(由NSOutlineView声明)时,文档指示我应该能够(除非出于某种原因,仅在IB中可用),我得到一个运行时异常,即大纲视图对于这些密钥中的任何一个都不是“密钥值编码兼容”。
当我绑定到selectedRowIndexes
时(后备,因为我需要获取该信息并对其进行反向工程以确定选择了哪个父/子对),它会更新数据源一次,数据源中的NSIndexSet
被冻结为其初始值。我也没有手动设置它。此外,我甚至无法在另一个方向绑定selectedRowIndexes
,因此数据源可以更新大纲视图的选择。我在大纲视图中得到了相同的“键值编码兼容”异常。
我在我的数据源类中定义了一个@property
,带有一个支持ivar,并且我在控制器类中绑定它,引用数据源和大纲视图,在加载数据之后,在-awakeFromNib
。
答案 0 :(得分:2)
Dov,您是否考虑过使用针对绑定量身定制的NSTreeController?或者,您可以将控制器设置为大纲视图的委托,以使用方法“-outlineViewSelectionDidChange”接收选择的通知
答案 1 :(得分:1)
我使用大纲视图的委托代替selectionIndexPaths
和-outlineViewSelectionIsChanging:
通知更新模型中的选择,而不是绑定-outlineViewSelectionDidChange:
,而{{1}}的行为不可靠。