Я работаю над документным приложением Какао. При запуске пользователю предоставляется «панель приветствия» (типа NSPanel
) с кнопками для общих действий, таких как «Создать новый документ» и «Открыть существующий документ». Эти действия связаны с действиями newDocument:
и openDocument:
первого респондента соответственно, как и соответствующие элементы в меню Файл.
Все работает как положено ... с тремя оговорками:
- Панель приветствия не закрывается при создании или открытии нового документа.
- Окна документов не имеют фокуса при создании.
- Открытые окна документа не имеют открытого файла, представленного в строке заголовка окна; аналогично, новые окна документов не создаются с такими заголовками, как «Без названия», «Без названия 2», «Без названия 3» и т. д., как и ожидалось. (Я упоминаю об этом не только потому, что это раздражает, но и потому, что это может дать некоторое представление о том, что происходит не так.)
Я частично решил # 1, сделав свой контроллер приложения делегатом панели приветствия. При нажатии кнопки «Открыть существующий документ» панель меняет свой статус ключа (поскольку открывается диалоговое окно браузера файлов), поэтому я могу закрыть панель в методе windowDidResignKey:
делегата. Однако я не могу понять, как закрыть панель при создании нового документа, поскольку не могу найти опубликованное уведомление или вызываемый метод делегата при создании нового документа. И, в конечном итоге, проблема №2 все еще остается проблемой, поскольку окна документов не получают фокус при создании.
У меня есть только подклассы NSDocument
- я вообще не использую пользовательский документ или оконный контроллер. Я также попытался изменить панель на NSWindow
, думая, что NSWindow
может вести себя по-разному, но возникают те же проблемы.