У меня есть приложение Core Data на основе документов Mac, в котором используются раскадровки. Раскадровка имеет следующую структуру:Использование NSArrayController в нескольких сценариях раскадровки
Window Controller
Split View Controller
Table View Controller
Text View Controller
модель My основных данных содержит Глава объект, который содержит два атрибута: заголовок и содержимое. Я хочу, чтобы в представлении таблицы отображалось название каждой главы. Текстовое представление отображает содержимое выбранной главы.
Если я использовал xib-файл, я бы добавил контроллер массива в файл xib. Я бы привязал контроллер массива к владельцу файла для доступа к подклассу NSPsistentDocument. Я бы привязал представление таблицы к свойству allocObjects контроллера массива и привязал текстовое представление к выбору контроллера массива.
Но с раскадровки все усложняется. Я могу добавить контроллер массива в контроллер табличного представления, привязать представление таблицы к контроллеру массива и показать заголовки глав в представлении таблицы. Но контроллер текстового вида не может привязываться к этому контроллеру массива, потому что контроллер массива находится в другой сцене.
Как добавить контроллер массива в Interface Builder, чтобы как контроллер представления таблиц, так и контроллер текстового вида могли получить к нему доступ и привязаться к нему?
Просто вставить его в приложении делегате как свойство ... (шучу, в основном.) Но что keypaths существует взгляды родительских в раскадровки OSX? – stevesliva
NSViewController имеет свойство parentViewController. Но если я добавлю контроллер массива в контроллер разделенного представления и привяжу привязку столбца таблицы представления таблицы к контроллеру табличного представления, используя путь ключа модели parentViewController.arrayController.arrangedObjects, приложение выйдет из строя, сказав, что класс не соответствует KVC для key arrayController. Я добавил выход для контроллера массива в мой подкласс класса split view и подключил выход к контроллеру массива I, созданному в IB, и произошел тот же самый сбой. –
Я читал это снова ... Возможно, переопределите getoverController родителя, чтобы вернуть конкретный подкласс, у которого есть свойство arrayController? Впрочем, это уродливо. – stevesliva