我想保持几个 NSPopUpButtons 与同一个模型对象同步。我刚刚熟悉绑定并实现了以下方案。
这是一个可怕的想法吗?
这里每个 NSPopUpButton 都有自己的 NSArrayController。每个 NSArrayController 从我的模型层中的同一个NSMutableArray 数据源获取它们的内容。
在向模型数组(上例中的动物数组)添加和删除对象时,我注意到了一些奇怪的问题,我想知道这种方法有多可行,或者是否有更好的方法让多个视图与同一个模型保持同步?
我想保持几个 NSPopUpButtons 与同一个模型对象同步。我刚刚熟悉绑定并实现了以下方案。
这是一个可怕的想法吗?
这里每个 NSPopUpButton 都有自己的 NSArrayController。每个 NSArrayController 从我的模型层中的同一个NSMutableArray 数据源获取它们的内容。
在向模型数组(上例中的动物数组)添加和删除对象时,我注意到了一些奇怪的问题,我想知道这种方法有多可行,或者是否有更好的方法让多个视图与同一个模型保持同步?
只要您将对模型的更改保留在主线程中,您应该可以这样做。
每个 NSArrayController 都会监听来自 NSMutableArray 的 KVO 通知,并相应地更新自己。
如果您通过其中一个 NSArrayController 更改数组,它将更新您的 NSMutableArray,这将再次触发一个 KVO 通知,该通知将被其他两个 NSArrayController 捕获。
以符合 KVO 的方式更新 NSMutableArray 很重要。也就是说,您应该使用mutableArrayValueForKey 返回的数组代理: