当显示 sheet 时,NSheet 控制器不会得到 运行。

NSheet controller doesn't get run when the sheet is displayed.

在 Objective-C 环境中,我有一个自定义控制器 "MyWindowController" 作为相关 XIB 的文件所有者,用作我的主 [=29] 上的模态 sheet =].

根据 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];
}

sheet在被运行主代码调用时正确显示,但控制器中的代码从未运行。在 MyWindowController 中设置的断点,包括在其 awakeFromNib 处的断点从未达到。

sheet这个主题我试了很多变体,效果都一样,难倒我了。

[[NSWindowController alloc] initWithWindowNibName:@"MyWindowController"]

创建 NSWindowController 的一个实例。如果您想要 MyWindowController 的实例,请使用

[[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"]