【问题标题】:Binding NSOutlineView's selection index paths绑定 NSOutlineView 的选择索引路径
【发布时间】:2011-09-03 12:37:41
【问题描述】:

我有一个自定义的<NSOutlineViewDataSource>,我会使用它的NSOutlineView 来更新selectionIndexPaths 属性。我无法让bind:toObject:withKeyPath:options: 真正正确绑定。基本上,我需要我的数据源知道选择了哪个项目。

当我绑定到selectionIndexes(由 NSTableView 声明)或selectionIndexPaths(由 NSOutlineView 声明)时,文档表明我应该能够(除非出于某种原因仅在 IB 中可用),我得到一个运行时例外是大纲视图对于这些键中的任何一个都不“符合键值编码”。

当我绑定到selectedRowIndexes(一个后备,因为我需要获取该信息并对其进行逆向工程以确定选择了哪个父/子对)时,它会使用@更新一次数据源数据源中的 987654331@ 冻结为其初始值。我也没有手动设置。此外,我什至无法在另一个方向上绑定selectedRowIndexes,因此数据源可以更新大纲视图的选择。我在大纲视图上得到了相同的“键值编码兼容”异常。

我在我的数据源类中定义了一个@property,并带有一个支持ivar,并且在加载数据后,我将它从一个控制器类绑定到数据源和大纲视图,在@ 987654334@.

【问题讨论】:

    标签: objective-c cocoa nstableview cocoa-bindings key-value-observing


    【解决方案1】:

    Dov,您是否考虑过使用为绑定量身定制的 NSTreeController?或者,您可以将控制器设置为大纲视图的委托,以使用“-outlineViewSelectionDidChange”方法接收选择通知

    Source

    【讨论】:

    • 我之前一直在使用 NSTreeController,但我想要更多的自定义行为。此外,-outlineViewSelectionDidChange 仅在用户单击新行时触发,而不是用于键盘导航。
    • 这已经很晚了,但无论如何这里有一条评论。我正在组合一个与大纲视图协调的自定义视图。箭头键可以很好地更改选择(对我来说)。我还可以找出从 selectedIndex 集中选择的对象。幸运的是,我的对象知道他们的父母和他们的孩子,所以如果我需要索引集,它很容易计算。我已经习惯了,来自 NSTreeController,但我什至可能不需要它。
    【解决方案2】:

    我没有绑定selectionIndexPaths,它的行为不可靠,而是使用我的大纲视图的委托来更新-outlineViewSelectionIsChanging:-outlineViewSelectionDidChange: 通知上模型中的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多