我對可可中的綁定世界相當陌生,我有一些麻煩(也許/可能是由於誤解)。更新表列綁定到NSArrayController
我有一個單例,它包含一個名爲plugins的NSMutableArray,它包含類Plugin的對象。它有一個名爲loadPlugins的方法,它將對象添加到插件數組中。這可能會在任何時候被調用。它已被添加爲Interface Builder中的一個實例。
另外在IB中是一個NSObjectController,其內容出口連接到單例。還有一個NSArrayController,其contentArray綁定到NSObjectController(控制鍵是'selection',模型鍵路徑是'plugins',對象類名是'Plugin')。
最後,我有一個2列的表視圖,它們的值綁定到NSArrayController的arrangeObjects,使用Plugin類中的屬性鍵。
到目前爲止這麼標準(據我至少可以從教程中知道)。我的麻煩是,當在單例中調用loadPlugins方法,並且將對象添加到插件數組中時,表不會更新以顯示對象(除非在加載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
這是非常有用的。感謝您回答您自己的問題 - 這對我來說是一大步。 – 2010-07-17 03:00:36