在windowDidLoad中打开NSPopover

时间:2013-08-04 05:12:35

标签: macos nspopover

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

如果我从按钮按下完全相同的功能,则弹出窗口会成功显示,但是当我在windowDidLoad中调用它时,它不会。

我可以看到我提出的控件有一个界限,所以我不认为这是问题所在。我还检查过弹出窗口的行为不是短暂的,因此它不应该在没有干预的情况下关闭。

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

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

init方法只调用以下内容,自定义视图和控制器连接在NIB中。

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

有没有人来过这个?

1 个答案:

答案 0 :(得分:0)

您是以编程方式分配和初始化您的CustomViewController对象,但是popover在您显示它之前没有机会从nib加载(在alloc& init之后的行上)。

在这两行之间force a load via loadView, like this:

[instruction loadView];

当您尝试显示“instruction.popover”时,您可能还希望确定“{{1}}”不是。