【问题标题】:Can multiple NSArrayControllers control the same array?多个 NSArrayController 可以控制同一个数组吗?
【发布时间】:2014-02-14 23:02:43
【问题描述】:

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

这是一个糟糕的主意吗?

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

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

【问题讨论】:

  • 支线任务:选择一个不适合其他动物的。抱歉,无法抗拒。
  • 永远不要牛人 :)

标签: cocoa cocoa-bindings nsarraycontroller nspopupbutton


【解决方案1】:

只要你在主线程中保留对模型的更改,你应该没问题。

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

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

以符合 KVO 的方式更新 NSMutableArray 很重要。即你应该使用mutableArrayValueForKey:返回的数组代理

【讨论】:

  • 我没有使用 -mutableArrayValueForKey: 进行更新,我只是选择了一个数组控制器并添加/删除对象。我会尝试直接处理模型,看看是否有帮助。
猜你喜欢
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多