2014-02-03 3 views
0

Я играю с шаблоном XCode по умолчанию для приложения какао. По умолчанию у него есть MainMenu.xib с окном и меню - удивительным.Настройка NSWindowController для корневого окна?

Я собираюсь создать свои представления/подпрограммы в коде, поэтому я создаю RootView: NSView и RootViewController: NSViewController и привяжу их в IB, чтобы мой базовый вид в этом окне был моим RootView, контролируемый мой RootViewController.

Задайте вопрос - Как мне сделать то же самое, что RootWindowController привязан к NSWindow? Я предположил, что File Owner был трюком, но он настроен на NSApplication, который, я думаю, верен. Основная задача NSWindowController в моем случае - управлять панелью инструментов на основе NSNotifications, выпущенных из других сервисов - это даже правильный дизайн здесь? Я не думаю, что могу сделать это из своего RootViewController, так как у меня нет ссылки на окно, но это то, где я должен это делать?

ответ

0

Много раз делегат приложения используется в качестве основного/центрального контроллера для приложения, не основанного на документах. Это хорошее место. Это может быть экземпляр NSWindowController, если хотите. Вы можете просто покончить с существующим окном в своем наконечнике.

Полезная информация из ссылки API NSWindowController:

Вы должны создать подкласс NSWindowController, когда вы хотите, чтобы увеличить поведение по умолчанию, например, чтобы дать окно пользовательский заголовок или выполнить некоторые задачи настройки, прежде чем окно загружается. В методе инициализации вашего класса обязательно вызовите супер либо одно из инициализаторов initWithWindowNibName: ..., либо инициализатор initWithWindow:. Какой из них зависит от того, возникает ли объект окна в файле nib или программно создан.

Но если бы это был я, я бы не стал ходить по маршруту NSWindowController; Я бы просто добавил эту логику к моему контроллеру приложения (и установил его как делегат приложения), так как это материал на уровне приложения. Не нужно добавлять слой сложности, если у вас нет LOT сложности обновления основного интерфейса, которую вы хотите разделить.

Смежные вопросы