У меня есть приложение Core Data без документов. Существует NSTreeController
, который управляет коллекцией объектов, отображаемых в одном NSOutlineView
в виде списка источников. Это обычные вещи: заголовки, папки, умные папки и т. Д.
Каждый из этих объектов-контейнеров имеет коллекцию contents
объектов. У меня есть три отдельных контроллера представления, которые отображают эти объекты различными способами (NSTableView
и два пользовательских графических представления, если вы действительно хотите это знать). Но на самом деле это всего лишь три разных представления одних и тех же данных. Они должны всегда показывать одни и те же объекты, иметь одинаковый выбор и т. Д.
Я также использую иерархию NSViewController
s для управления своими представлениями. (Если бы я знал о превосходных KTUIKit
Кэти Шиве в то время, я бы использовал это, но мои контроллеры вида очень похожи - и очень вдохновлены - ее)
В нынешнем виде у меня есть NSTreeController
, живущий в контроллере вида для списка источников. У меня также есть NSArrayController
в каждом из контроллеров подвидов, который связан с NSTreeController
через несколько чрезмерно сложных путей к ключам.
Итак, что нужно изменить, на мой взгляд, это следующее:
-
NSTreeController
необходимо выйти из контроллера вида структуры.
- Должен быть один
NSArrayController
, к которому может быть привязан каждый из представлений содержимого вместо трех отдельных. Хотя я менее уверен в этом.
У меня возникли трудности с выяснением , где эти вещи должны жить. Мне трудно решить, какие объекты, если таковые имеются, действительно «владеют» различными контроллерами. Родительские контроллеры представления владеют этим? Есть ли у окна контроллер? Поскольку это данные уровня приложения, могу ли я зайти так далеко, чтобы сделать их принадлежащими делегату приложения? (Я могу представить себе ситуацию, когда пользователь может захотеть открыть несколько окон, хотя в настоящее время это не поддерживается). Что думает улей StackOverflow?