Почему мой лист не прикреплен к окну, для которого он предназначен?
-
21-08-2019 - |
Вопрос
У меня есть перо, которое содержит два окна, одно из которых - главное окно приложения, видимое при запуске, а другое - пользовательский лист (и, следовательно, не видимое при запуске).Когда требуется лист, мой контроллер вызывает:
[NSApp beginSheet: sheetWindow modalForWindow: mainWindow modalDelegate: self didEndSelector: @selector(didEndSheet:returnCode:contextInfo:) contextInfo: nil];
который отображает окно листа и запускает модальный сеанс, но окно имеет стандартную строку заголовка Aqua, не "подключено" к главному окну и может перемещаться так же, как обычное окно.Излишне говорить, что это нежелательно :-).Почему окно листа не "выскакивает" из окна, для которого оно запущено, как обычно делают листы при запуске таким образом?
Я задавался вопросом, был ли тот факт, что я начинал лист внутри страницы контроллера -awakeFromNib
это могло бы возыметь эффект, поэтому я переместил лист на действие кнопки, которое я мог бы запустить позже.Это не изменило поведение.Я не придумал, что еще можно попробовать.Я ориентируюсь на 10.5 SDK, используя Xcode 3.1.
Редактировать: итак, похоже, что я создал модальный диалог;таблицы и диалоговые окна в режиме приложения запускаются с помощью -beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:
способ.Но как мне указать, что мое окно должно быть листом и нет модальный диалог?
Решение
Если значение MainWindow равно нулю, то лист будет отображаться в виде окна / диалогового окна.
Другие советы
Это случилось со мной пару дней назад:
- Вы забыли установить окно розетка вашего оконного контроллера (Владелец файла из файла Nib).Как указал Натан, вы можете видеть, что
-[NSWindowController window]
метод возвращает nil. - Вы также должны снять флажок Виден при запуске вариант листа.