简单的NSTableView绑定示例

时间:2010-05-29 02:18:45

标签: nsarray cocoa-bindings nstableview nsarraycontroller

我正在尝试通过绑定填充2列NSVTableView,但数据未显示在表中。

在XCode中:

我的AppDelegate中有一个NSMutableArray,它将保存数据,以及相应的@property和@synthesize。

在一个事件上,我在NSMutableArray上调用[removeAllObjects]并用一些NSDictionary对象重新填充它。每个字典包含2个KVP:一个名称和一个值。

在IB:

我添加了一个NSArrayController并将其内容数组绑定到我的AppDelegate,并将ModelKeyPath设置为AppDelegate中NSMutableArray的名称。

在NSTableView上,我将Content绑定到ArrayController。 ControllerKey =“arrangeObjects”,ModelKeyPath = empty

对于这两列中的每一列,我将Value绑定到AppController并将ModelKeyPaths分别设置为NAME和VALUE。 ControllerKey =“ArrangedObjects”。


我已经尝试过其他一些东西,例如在app委托中使用NSArray,并在每次需要更新值时创建一个新的。必须有一些我忘记的小事。它是什么?

jorj

1 个答案:

答案 0 :(得分:4)

NSArrayController在存储方面与NSMutableArray没有什么不同。如果您可以使用[[mutableArray firstObject] valueForKey:@"NAME"];之类的内容并获取所需的值,那么阵列控制器应该能够为您提供正确的值,并且如果您具有正确的连接,绑定应该可以正常工作。

但是,如果前面提到的代码行没有为您提供所需的值,那么您会遇到其他问题。很难说清楚,但我现在假设你有一系列字典都有相同的两个键(让我们称之为firstKeysecondKey)。 Ii将进一步假设目标是让第一列显示firstKey的所有值,第二列显示secondKey的值。根据这个理论,你的AppDelegate中的NSMutableArray保持你上面描述的方式,但是你的绑定会有所改变。

首先,确保您使用的nib文件的文件所有者设置为AppDelegate

然后,ArrayController内容数组应绑定到File's Owner.mutableArray

表视图的整体绑定并不是非常重要,因为我没有任何问题只是绑定列。

第一列的值应绑定到ArrayController.arrangedObjects.firstKey。当然,第二列是相同的,除了模型关键路径是secondKey