Приложение Mac на основе документов в Xcode 5

Где находится главное окно в приложении для Mac, основанном на документах? Если вы создаете новый проект из Xcode, в MainMenu.xib нет окна. В Document.xib есть только объект окна, который используется для окна документа. Я хочу спроектировать главное окно в конструкторе интерфейсов, но не понимаю, где оно создается.

ИЗМЕНИТЬ

Я думаю, что столкнулся с ошибкой в Xcode. Создание приложения на основе документа со случайным именем работает, как и ожидалось.

Однако, если я создаю приложение на основе документа с именем предыдущего имени проекта, я вижу сначала представленное окно без документа, а также эту ошибку в консоли.

Unknown class 'AppDelegate', using 'NSObject' instead. Encountered in Interface Builder file at path /Users/[COMPUTER]/Library/Developer/Xcode/DerivedData/[PROJECT]-gohsjlddlopenfapdikaqibmvvqs/Build/Products/Debug/[PROJECT]/Contents/Resources/en.lproj/MainMenu.nib.

person Berry Blue    schedule 23.09.2013    source источник


Ответы (2)


Приложения на основе документов не имеют «главного» окна — по определению, приложение на основе документов основано на пользовательском интерфейсе, включающем одно окно для каждого документа. Если при создании нового проекта приложения в Xcode вам нужно приложение, пользовательский интерфейс которого сосредоточен в одном окне (например, iTunes или Системные настройки), снимите флажок «Создать приложение на основе документа» после выбора шаблона приложения.

Если вы хотите создать приложение, которое использует рабочий процесс на основе документов, но также имеет окна, не относящиеся к конкретному документу, вы можете создать отдельные кончики для этих окон и реализовать логику для их отображения и управления где-то за пределами вашего класса документа. (Например, вы можете создать подкласс NSWindowController для окна настроек с сопутствующим наконечником для пользовательского интерфейса этого окна и создать/показать это окно из команды меню, реализованной в вашем делегате приложения.)

person rickster    schedule 23.09.2013
comment
Когда я запускаю свой проект, он сначала показывает пустое текстурированное окно, а не окно документа. Когда я делаю File -> New, отображается окно документа. Я не понимаю, для чего это первое окно. - person Berry Blue; 24.09.2013

Базовая архитектура документа какао предполагает, что приложение имеет одно окно для каждого документа, а перо главного меню принадлежит делегату приложения.

Это не мешает вам создавать подклассы или добавлять дополнительные окна к любому перу или контроллеру.

Если вам нужно главное окно и окна документов, это обычная парадигма, но не в предоставленном шаблоне.

Самый простой способ сделать это — добавить окно в кончик главного меню. Тогда вы, вероятно, захотите, чтобы у него был способ ссылаться на все окна ваших документов. Хорошим примером этого является Mail на Mac, хотя он также поддерживает несколько основных окон.

Вам, вероятно, понадобится собственный подкласс NSWindowController, чтобы сделать это правильно.

Но вы также можете добавить подкласс NSObject в качестве делегата вашего приложения и имитировать конфигурацию делегата в шаблоне проекта приложения, не основанного на документах. Для этого вам нужно будет пройти несколько шагов. Создайте подкласс NSObject. Убедитесь, что он объявляет протокол. В свой MainMenu.xib добавьте NSObject (вещь, похожая на синюю коробку) из библиотеки. Установите его класс в свой новый подкласс NSObject. Щелкните значок заполнителя NSApplication в файле xib и в инспекторе справа подключите свойство делегата к объекту делегата вашего приложения. Теперь выберите объект делегата вашего приложения. Подключите его свойство окна к вашему окну в файле xib. Если его нет и, вероятно, нет, вам нужно будет объявить его в интерфейсе класса делегата вашего приложения. (это то же самое, что добавить свойство для любой кнопки или другого объекта, но вы захотите изменить его с @property (unsafe_unretained) IBOutlet NSWindow *window; на @property (strong) IBOutlet NSWindow *window;

person uchuugaka    schedule 24.09.2013