objective-c - NSArrayController 选择未使用 NSTableView 绑定(bind)进行更新

标签 objective-c macos cocoa cocoa-bindings nsarraycontroller

这让我困惑了几个小时......

我有一个具有属性 (NSMutableArray *cuesArray) 和其他一些属性的对象 (CuesDoc)。 cues 数组包含多个 Cue 对象。在我的 AppDelegate 中有一个名为 (CuesDoc*) currentCuesDoc 的属性。

在 IB 中,我有一个 NSArrayController,它绑定(bind)到 AppDelegate.currentCuesDoc.cuesArray

我有一个 view-based NSTableView 绑定(bind)到 NSArrayController 并且可以在表和 cuesArray 中添加/删除/编辑值.到目前为止一切顺利。

我在其下方有详细信息字段,它们绑定(bind)到 NSArrayController.selection,模型键路径设置为每个属性。

当 View 首次出现时,详细信息字段会填充 TableView 中第一项的内容,但是当我选择其他行时,详细信息字段不会更新以反射(reflect)当前选择。

我在 NSArrayControllerselectionIndexesselection 中添加了一个观察者,当 View 出现时,我得到了 的调用observeValueForKeyPath: 方法一次,但在更改选择之后不再执行。

最佳答案

对于基于 View 的 NSTableView,您必须将 tableView 的选择索引绑定(bind)到 selectionIndexes 的数组 Controller 键,以保持 View 的选择与 Controller 的选择同步。选择绑定(bind)与内容绑定(bind)是分开的。较旧的基于单元格的 NSTableView API 不需要此步骤。

关于objective-c - NSArrayController 选择未使用 NSTableView 绑定(bind)进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649916/

相关文章:

objective-c - NSString 适用于一种方法,但不适用于另一种方法

macos - 使用 veclib 对 OS X 进行频率分析

macos - OSX 核心音频 : Getting inNumberFrames in advance - on initialization?

iphone - 将多个按钮连接到一个 Action ?

objective-c - 在 iOS 设备上的应用程序之间共享文件

iphone - 如何以及何时调整 subview 的位置?

macos - Think Pascal 调试器是什么让它如此传奇?

mysql - Mac 终端模式下 mysql 的 DDL 字符串语法

cocoa - 如何在Cocoa中设置一个简单的表格 View

iphone - GCD、线程、程序流程和 UI 更新