- (NSWindow *)窗口在loadWindow时不显示窗口

时间:2013-01-02 20:30:40

标签: cocoa nswindowcontroller

当我在MainMenu.xib中按下按钮时,我正在尝试打开一个名为EasyWindow.xib的nib文件。我有按钮连接到这个IBAction方法,但是当我点击按钮时它没有打开。当我将这个初始化部分中的“窗口”更改为“loadWindow”时,它工作得非常好,但Mac Developer Library说“你永远不应该直接调用这个方法”。如何使窗口方法有效?

- (IBAction)loadEasyWindow:(id)sender
{
    [[[NSWindowController alloc] initWithWindowNibName:@"EasyWindow"] window];
}

1 个答案:

答案 0 :(得分:0)

- (NSWindow *)window仅为您提供NSWindowController管理的实际窗口对象的引用。它实际上并没有对那个窗口做任何事情。它更像是一个吸气剂而不是其他任何东西。

同时,-loadWindow是一个方法,当你的程序实际从nib文件加载窗口时,它被调用,与打开它,关闭它并显示它几乎没什么关系。这就是你不应该打电话的原因。我猜这是有效的,因为副作用是显示自己的窗口。

您正在寻找的可能是NSWindowController - (IBAction)showWindow:(id)sender [reference]它应该完全符合您的要求:

  

显示与接收器关联的窗口