Что касается вашего первого вопроса, вам не нужно использовать главное окно, которое Apple предоставляет в MainMenu.xib.Если вы хотите, вы можете удалить это окно из пера, а затем создать экземпляр NSWindowController
в методе делегата applicationDidFinishLaunching:
, который затем загружает и контролирует главное окно.
Вы определенно запутались в NSViewController
, что на самом деле не так уж удивительно, поскольку вы можете предположить, что оно работает как UIViewController
.
Фактически, NSViewController
полностью отличается от UIViewController
и не имеет такого же уровня поддержки Interface Builder.Например, вы не можете поместить контроллер вида в окно в IB, тогда как это стандартная практика для iOS.NSViewController
- это относительно новый класс на Mac, и обычно вы используете его для программной загрузки представлений и управления содержимым представления.
Класс, который наиболее близко соответствует UIViewController
на Mac, - NSWindowController
.Это было намного дольше, чем NSViewController
, и на самом деле многие приложения Mac вообще не используют NSViewController
.
Как правило, каждое окно в вашем приложении должно иметь оконный контроллер, управляющий им.Вы можете использовать подклассы NSWindowController
для обработки большого количества функциональных возможностей для каждого окна.
Если вы хотите использовать NSViewController
, то вам следует использовать ваш оконный контроллер для управления этими объектами контроллера представления.Обычно это делается программно из-за вышеуказанного отсутствия поддержки Interface Builder.Каждый экземпляр NSViewController
загружает свой вид из определенного файла пера.Обычно вы не добавляете контроллеры представления в Интерфейсном Разработчике.
Для списка источников вы обычно используете NSOutlineView
, если у вас есть несколько разделов, или NSTableView
.Эти два объекта используются всякий раз, когда вам нужен список элементов.NSOutlineView
является иерархическим, тогда как NSTableView
является плоским.
Надеюсь, это поможет.