1

我想保持几个 NSPopUpButtons 与同一个模型对象同步。我刚刚熟悉绑定并实现了以下方案。

控制器

这是一个可怕的想法吗?

这里每个 NSPopUpButton 都有自己的 NSArrayController。每个 NSArrayController 从我的模型层中的同一个NSMutableArray 数据源获取它们的内容。

在向模型数组(上例中的动物数组)添加和删除对象时,我注意到了一些奇怪的问题,我想知道这种方法有多可行,或者是否有更好的方法让多个视图与同一个模型保持同步?

4

1 回答 1

1

只要您将对模型的更改保留在主线程中,您应该可以这样做。

每个 NSArrayController 都会监听来自 NSMutableArray 的 KVO 通知,并相应地更新自己。

如果您通过其中一个 NSArrayController 更改数组,它将更新您的 NSMutableArray,这将再次触发一个 KVO 通知,该通知将被其他两个 NSArrayController 捕获。

以符合 KVO 的方式更新 NSMutableArray 很重要。也就是说,您应该使用mutableArrayValueForKey 返回的数组代理:

于 2014-02-14T15:02:43.957 回答