5

我有 a NSCollectionView,我确实有 adataArray和 aselectedIndexes NSIndexSet在它的File's Owner. (因为我在那个项目上使用 MonoMac,所以我在使用简单的代码时遇到了一些麻烦NSArrayController,所以我决定自己实现源代码。)初始化我的控制器时,我将一些数据(NSMutableDictionarys)添加到dataArray. 当应用程序显示它的窗口时,我刚刚添加的所有数据都显示得很好。

问题是对数据源的更改不会以任何方式影响界面。当我从数据源添加、更改或删除项目时,界面是否应该自动更新,因为我使用它的相应键绑定了值?

我错过了什么吗?对此有什么想法吗?

非常感谢
-f

4

1 回答 1

2

绑定到数据源的一对多关系时,您必须确保数据源符合此属性的键值观察。对可变集合拥有公共属性是不够的,比如NSMutableArray.

在数据源的实现中,您必须使用NSKeyValueObserving协议中的方法来宣传您所做的更改(willChange:valuesAtIndexes:forKey:用于对多关系)。

如果性能不如简单实现重要,您还可以使用(不可变NSArray的)属性,并在数据更改时始终分配一个新数组。但是,这样您将不会获得添加或删除对象的漂亮动画。

于 2011-02-07T16:34:56.163 回答