В среде Objective-C у меня есть пользовательский контроллер «MyWindowController» в качестве владельца файла соответствующей XIB, который будет использоваться в качестве модального листа над моим главным окном.
Вызов в соответствии с документацией Apple (за вычетом амортизации):
//in the main's awakeFromNib
MyWindowController = [[NSWindowController alloc]
initWithWindowNibName:@"MyWindowController"];
//in the main place where needed
[NSApp beginSheet: MyWindowController.window
modalForWindow: _window
modalDelegate: nil
didEndSelector: nil
contextInfo: nil ];
[NSApp runModalForWindow: MyWindowController];
// Dialog is up here.
[NSApp endSheet: MyWindowController.window];
[MyWindowController.window orderOut:self];
На данный момент MyWindowController является минимальным подклассом NSWindowController, включая следующее для кнопки:
- (IBAction)doCancel:(id)sender
{
//...set return value
[NSApp stopModal];
}
Лист отображается правильно, когда вызывается работающим основным кодом, но код в контроллере никогда не запускается. Точки останова, установленные в MyWindowController, включая точку останова awakeFromNib, никогда не достигаются.
Я пробовал так много вариаций на тему листа, все с одинаковым эффектом, я в тупике.