Macos 在windowDidLoad中打开NSPover

Macos 在windowDidLoad中打开NSPover,macos,nspopover,Macos,Nspopover,我试图在mac应用程序中显示一个NSPOVER,当窗口打开给用户一个指令时,但popover不会显示 如果我通过按键调用完全相同的函数,则弹出框会成功显示,但在windowDidLoad中调用时,弹出框不会显示 我可以看到我从中呈现它的控件有一个边界,所以我认为这不是问题所在。我还检查了popover的行为是否是暂时的,因此它不应该在没有干预的情况下关闭 在我的函数中,我将一些变量传递给自定义初始化器,但基本上就是这样: CustomViewController *instruction = [

我试图在mac应用程序中显示一个NSPOVER,当窗口打开给用户一个指令时,但popover不会显示

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

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

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

CustomViewController *instruction = [[CustomViewController alloc] init];
[instruction.popover showRelativeToRect:[aField bounds] ofView:aField preferredEdge:NSMaxXEdge];
init方法只调用以下内容,定制视图和控制器连接在NIB中

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

有人来过吗?

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

在这两条线之间,


当您尝试显示“
指令.popover
”时,您可能还希望确保它不是零。

您能显示实际设置“
.popover
”属性的代码吗?它是CustomViewController上的一个属性,并且关系在NIB中设置<代码>@property(assign)IBOutlet nspover*popover。My CustomViewController是NIB文件的所有者类,并且是popover的contentViewController。在调用showRelativeToRect:之前,尝试在loadView中添加,但没有区别。我还确认了爆米花不是零。
[instruction loadView];