Контроллер NSheet не запускается при отображении листа. - PullRequest
0 голосов
/ 04 мая 2018

В среде 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, никогда не достигаются.

Я пробовал так много вариаций на тему листа, все с одинаковым эффектом, я в тупике.

1 Ответ

0 голосов
/ 04 мая 2018
[[NSWindowController alloc] initWithWindowNibName:@"MyWindowController"]

создает экземпляр NSWindowController. Если вы хотите экземпляр MyWindowController, используйте

[[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...