我对可可绑定的世界还很陌生,而且我遇到了一些麻烦(也许/可能是由于误解)。
我有一个单例,其中包含一个称为插件的 NSMutableArray,其中包含类插件的对象。它有一个名为 loadPlugins 的方法,可以将对象添加到 plugins 数组中。这可以在任何时候调用。它已作为实例添加到 Interface Builder 中。
IB 中还有一个 NSObjectController,它的内容出口连接到单例。还有一个 NSArrayController,它的 contentArray 绑定到 NSObjectController(controller key 是 'selection',model key path 是 'plugins',object class name 是 'Plugin')。
最后,我有一个包含 2 列的表视图,其值使用 Plugin 类中的属性键绑定到 NSArrayController 的排列对象。
到目前为止是标准的(至少据我从教程中可以看出)。我的问题是,当在单例中调用 loadPlugins 方法并将对象添加到 plugins 数组时,表格不会更新以显示对象(除非在加载 nib 之前调用 loadPlugins)。在 tableView 上调用 -reloadData 不会做任何事情。
有没有办法告诉 NSArrayController 引用的数组已更新?我知道有 NSArrayController 的 -add: 方法,可以在 loadPlugins 中使用,但这是不可取的,因为我想让单例与显示方面完全分开。
这似乎与: Refresh Cocoa-Binding - NSArrayController - ComboBox有关
这条线:“编辑控制器背后的数组”似乎可以指出问题所在,但我希望有可能让单身人士不知道控制器。
提前致谢。
\编辑...
根据 TechZen 的建议,绑定如下:
TableColumn --('arrangedObjects', 'pluginName', Value)--> NSArrayController
NSArrayController --('selection', 'plugins', ContentArray)--> NSObjectController
NSObjectController --(content)--> PluginsManager