Я довольно новичок в мире привязок в какао, и у меня возникают некоторые проблемы (возможно, вероятно, из-за недоразумений).Обновить столбцы таблицы, привязанные к NSArrayController
У меня есть singleton, который содержит NSMutableArray, называемые плагинами, содержащие объекты класса Plugin. Он имеет метод loadPlugins, который добавляет объекты в массив плагинов. Это можно назвать в любой точке. Он добавлен в качестве примера в Interface Builder.
Также в IB находится NSObjectController, выход контента которого связан с одноточечным. Существует также NSArrayController, contentArray которого связан с NSObjectController (ключ контроллера - это «выбор», путь ключа модели - «плагины», имя класса объекта - «плагин»).
И, наконец, у меня есть табличный вид с двумя столбцами, значения которых привязаны к организованным объектам NSArrayController, используя ключи свойств в классе Plugin.
До сих пор такой стандартный (насколько я могу судить по учебникам). Моя проблема в том, что когда метод loadPlugins вызывается в singleton, а объекты добавляются в массив плагинов, таблица не обновляется, чтобы показывать объекты (если loadPlugins не вызывается до загрузки nib). -reloadData, вызываемая в tableView, ничего не делает.
Есть ли способ сообщить NSArrayController, что ссылочный массив был обновлен? Я понимаю, что есть метод -add: для NSArrayController, который можно использовать в loadPlugins, но это нежелательно, поскольку я хочу, чтобы singleton полностью отличался от аспекта отображения.
Это кажется связано с: Refresh Cocoa-Binding - NSArrayController - ComboBox
Строка: «редактирование массива за спиной контроллера», кажется, возможно, определить проблему, но я надеюсь, что можно было бы иметь одноплодной не знают о контроллер.
Заранее спасибо.
\ редактировать ...
По предложению TechZen, вот это привязок:
TableColumn --('arrangedObjects', 'pluginName', Value)--> NSArrayController
NSArrayController --('selection', 'plugins', ContentArray)--> NSObjectController
NSObjectController --(content)--> PluginsManager
Это было монументально полезно. Спасибо, что ответили на ваш собственный вопрос - для меня это был большой шаг. –