使用NSWindowController加载NIB文件不会设置窗口或顶级对象

psy*_*tik 10 cocoa interface-builder

我有一个NIB文件,我使用NSWindowController initWindowNibName加载.NIB文件包含一个NSWindow.它的文件所有者是类NSWindowController.我已将文件所有者的窗口连接到窗口.

当我加载NIB时,[windowController窗口]为nil,顶层对象数组也是如此.但是,我仍然可以调用[windowController showWindow:nil]并成功显示窗口​​.

这里的东西似乎不对.我已经确认了连接,文件的所有者也没问题.事实上,当我在调试器中查看windowController实例的_owner值时,我看到它指向我自己的预期.

有关可能发生的事情的任何建议?

谢谢!

Rob*_*ier 7

当你说[windowController window]是零时,你是如何确定这一点的?-window在第一次调用之前,NIB实际上并未加载.因此,如果您正在查看调试器,则在_window调用之前,您将看到为nil showWindow:.在那之后,_window应该有一个非零值.


Abi*_*ern 5

你是否已将NSWindowController子类化?

当我这样做时,我使用一个名为MyWindowController的NSWindowController并initWithWindowNibName:在子类中调用init

然后,将File的Owner设置为指向MyWindowController类.

  • 您不需要子类化NSWindowController.这是允许的,但不是必需的,不应该解决psychotik的问题. (3认同)