Что происходит, когда в Xcode выбран параметр «создать приложение на основе документа»? - PullRequest
12 голосов
/ 08 марта 2011

При просмотре некоторого примера кода обратите внимание на то, что установка заголовка главного окна в IB не оказывает влияния, если выбран параметр «создать приложение на основе документа».Окно вышло бы с «Untitled» в качестве заголовка.И нам нужно переопределить - (NSString *) displayName {} в MyDocument: NSDocument inorder, чтобы установить заголовок окна.Просто хотелось бы, чтобы некоторые эксперты по xcode могли объяснить, почему это так.То есть что добавляется в систему, когда мы проверяем опцию «создать приложение на основе документа» при первоначальном создании проекта?

Ответы [ 2 ]

13 голосов
/ 08 марта 2011

Поймите, что когда вы создаете проект из шаблона в XCode, XCode на самом деле не генерирует никакого кода.Конечно, это может заполнить несколько пробелов с вашим именем, названием вашего проекта и т. Д. Но то, что вы получаете, - это, по сути, консервированный стартовый код для выбранного вами типа проекта.При добавлении опции «на основе документа» добавляется подкласс NSDocument с разумным названием для вашего приложения.

Взгляните на «Руководства по интерфейсу пользователя» для Apple, например this и вы увидите, что окна документов должны называться в зависимости от документа, который они отображают.По этой причине стандартное поведение приложения на основе документа заключается в установке заголовка для имени файла документа.

Наконец, посмотрите на справочную страницу для NSDocument и вы 'Вы обнаружите, что поведение, которое вы видите, является частью класса NSDocument.В частности, если вы посмотрите на метод -displayName, вы найдете информацию о том, как правильно настроить заголовок окна.

2 голосов
/ 08 марта 2011

Контроллер окна может свободно переопределять заголовок, данный окну в IB. В приложении без документов контроллеры окон по умолчанию будут использовать заголовок окна, потому что у них нет причин не делать этого. Однако, когда документ создает свои оконные контроллеры, он сообщает им, что они подключены к нему. Затем они просматривают свойство displayName документа и обновляют заголовок окна в ответ. Реализация по умолчанию просто устанавливает заголовок окна таким же, как заголовок документа, который остается без названия до тех пор, пока файл не будет сохранен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...