2015-05-22 4 views
0

Я переношу приложение iOS в OS X. Я рассматривал пример кода Apple AnimatedTableView в качестве отправной точки, но был удивлен, обнаружив, что у него нет NSApplicationDelegate. В iOS я обычно создаю объекты программно, в applicationDidFinishLaunching и пытаюсь выяснить, как это сделать на OS X, если только я этого не сделаю.UIApplicationDelegate против NSApplicationDelegate, MainMenu.xib

MainMenu.xib для AnimatedTableView содержит объект ContentController, который ссылается на один из классов их контроллеров. Похоже, метод «wakeFromNib» этого класса - это начало действия. Правильно ли, что любые объекты, которые вы добавляете в MainMenu.xib, автоматически создаются при запуске приложения? Итак, я могу просто поместить класс главного контроллера в MainMenu.xib и начать создавать другие объекты программно оттуда? Или, чтобы придерживаться моего шаблона iOS, я мог бы заменить объект контроллера в MainMenu.xib объектом NSApplicationDelegate и запрограммировать ли он объект главного контроллера?

Верно ли это? Я стараюсь избегать IB как можно больше, и, очевидно, мне не хватает некоторых базовых понятий.

ответ

1

Правильно ли, что любые объекты, которые вы добавляете в MainMenu.xib, автоматически создаются при запуске приложения?

Было бы правильнее сказать, что приложение Cocoa, который настроен на использование .xib файлов вместо раскадровки будет автоматически загружать файл .xib, указанный в качестве основного файла СИБ в Info.plist файле приложения. Но да, приложение на основе .xib, как правило, будет настроено для загрузки MainMenu.xib при запуске.

Итак, я мог бы просто поместить класс главного контроллера в MainMenu.xib и начать с него программно создавать другие объекты?

Несомненно, это один из подходов, который работает.

Или придерживаться моего рисунка IOS, я мог бы заменить объект контроллера в MainMenu.xib с объектом NSApplicationDelegate и это программно создать объект мастер контроллер?

В проекте должен быть объект делегирования приложения. Более того, есть прокси-сервер делегата приложения в основном .xib-файле, поэтому вы можете добавлять выходные данные в делегат приложения и подключать их к объектам в основном файле .xib. Если вы хотите создать объект «главный контроллер» в делетете приложения, вы можете это сделать.

+0

Вот что меня бросило, в этом конкретном образце кода от Apple нет делегата приложения. Теперь я вижу ссылку связанного делегата на NSApplication FileOwner, которую я мог бы привязать к объекту в основном файле .xib. Я всегда начинал с примера кода, где это было уже подключено и никогда не знало, откуда оно взялось. Думаю, вам не нужен делегат приложения на OSX. – user1055568

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