Подтвердить что ты не робот

Почему мой лист не прикреплен к окну, в котором он работает?

У меня есть NIB, который содержит два окна, одно из которых - главное окно приложения, видимое при запуске, а другое - пользовательский лист (и поэтому не отображается при запуске). Когда лист нужен, мой контроллер вызывает:

[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:. Но как я могу указать, что мое окно должно быть листом, а не модальным диалогом?

4b9b3361

Ответ 1

Если mainWindow равно nil, тогда лист будет отображаться как окно/диалог.

Ответ 2

Это случилось со мной пару дней назад:

  • Вы забыли установить окно своего оконного контроллера (владелец файла файла Nib). Как показано Nathan, вы можете увидеть, что метод -[NSWindowController window] возвращает nil.
  • Вы также должны снять отметку с параметра Видимый при запуске листа.