Я разбил это на очень маленький проект. Использование следующего кода в делегате приложения:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
TestingWindowController * testingWindowController = [[TestingWindowController alloc] initWithWindowNibName: @"TestingWindowController"];
// Begin our sheet
[NSApp beginSheet: testingWindowController.window
modalForWindow: self.window
modalDelegate: self
didEndSelector: @selector(windowDidEnd:returnCode:contextInfo:)
contextInfo: NULL];
}
- (void)windowDidEnd:(id)alert returnCode:(NSInteger)returnCode contextInfo:(id) contextInfo
{
// If the user did not accept, then we really don't care what else they did!
if (returnCode != NSOKButton) return;
// We have had an error. Display it.
[[NSApplication sharedApplication] presentError: nil
modalForWindow: self.window
delegate: nil
didPresentSelector: nil
contextInfo: NULL];
}
А следующее действие привязано к кнопке на пера Windows. (Обратите внимание, что окно пера также не отображается при запуске ).
- (IBAction) onClose: (id) sender
{
[[NSApplication sharedApplication] endSheet: self.window
returnCode: NSOKButton];
[self.window orderOut: nil];
} // End of onClose
В конечном итоге происходит следующее: как только я запускаю onClose
, все окна исчезают, и у меня не остается ничего, кроме диалогового окна с ошибкой (, главное окно исчезло ).
Что-то не так с моим кодом? Почему мое главное окно исчезает?
ПРИМЕЧАНИЕ. :Я знаю, что не передаю ошибку методу presentError. Я намеренно оставил это значение null, так как у меня было совсем немного времени, чтобы написать пример кода. Передача фактической ошибки приводит к такому же поведению.
Пример проекта доступен здесь .