Как мне поместить окно в отдельный NIB, дать ему собственный NSWindowController, заставить его выдвигаться в виде листа?
(Это типичная вещь, связанная с листами?)
Я пытаюсь показать настраиваемый лист (окно, которое скользит вниз по строке заголовка родительского окна) из моего главного окна. Я думаю, что то, что я пытаюсь сделать, стандартно, но я не могу найти четких примеров или объяснений того, как делать именно то, что я хочу.
То, что я пытаюсь сделать:
- (void)showCustomSheet: (NSWindow *)window
// User has asked to see the custom display. Display it.
{
if (!settingsSheet)
//Check the settingsSheet instance variable to make sure the custom sheet does not already exist.
[NSBundle loadNibNamed:@"SettingsSheet" owner: self];
//BUT HOW DOES THIS MAKE settingsSheet NOT nil?
[NSApp beginSheet: settingsSheet
modalForWindow: window
modalDelegate: self
didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
contextInfo: nil];
// Sheet is up here.
// Return processing to the event loop
}
Пожалуйста, извините за следующие упрощенные и многочисленные вопросы:
loadNibName: owner:
, я не хочу, чтобы владелец
был be self
, потому что это заставляет мое приложение делегировать владельца «MyCustomSheet» - это то, для чего должен быть мой SettingsWindowsController
. Однако я не знаю, как сделать SettingsWindowsController
владельцем в этом методе. loadNibName: owner:
немедленно отображает окно как обычное окно, а не как лист, который выдвигается из главного окна. beginSheet: modalForWindow: etc
вызывает «Требуется модальный сеанс. модальное окно ". Я почти уверен, что это потому, что я сделал владельца Пера собой
(как я уже упоминал). settingsSheet
- но они, очевидно, связаны , потому что сначала проверяется код: if (! settingsSheet)
(Я отметил это комментарием // НО КАК ЭТО ДЕЛАЕТ settingsSheet НЕ нулевым?
) Спасибо за терпение при прочтении всего этого!