0

当窗口打开时,我试图在 Mac 应用程序中显示 NSPopover 以向用户提供指令,但弹出窗口不会显示。

如果我通过按下按钮调用完全相同的函数,则弹出框会成功显示,但是当我在 windowDidLoad 中调用它时,它不会。

我可以看到我从中呈现它的控件有一个界限,所以我认为这不是问题。我还检查了弹出框的行为不是暂时的,所以它不应该在没有干预的情况下关闭。

在我的函数中,我将一些变量传递给自定义初始化程序,但基本上就是这样:

CustomViewController *instruction = [[CustomViewController alloc] init];
[instruction.popover showRelativeToRect:[aField bounds] ofView:aField preferredEdge:NSMaxXEdge];

init 方法只是简单地调用以下内容,自定义视图和控制器在 NIB 中挂钩。

[super initWithNibName:@"InstructionalView" bundle:nil]

有没有人遇到过这个?

4

1 回答 1

0

您正在以编程方式分配和初始化您的 CustomViewController 对象,但弹出框在显示它之前没有机会从笔尖加载(在 alloc 和 init 之后的行上)。

在这两行之间,通过 强制加载loadView,如下所示:

[instruction loadView];

当您尝试显示它时,您可能还想确保 " instruction.popover" 不为零。

于 2013-08-04T06:37:17.617 回答