2011-08-05 61 views
0

点击菜单项显示NSWindow,但只是第一次,为什么是这样,以及如何解决它?显示NSWindow

-(IBAction)menuClick:(id)sender 
{ 
    if (!formsView) { 
     formsView = [[NSWindowController alloc] initWithWindowNibName:@"Forms"]; 
    } 

    [formsView showWindow:self]; 
} 

回答

5

这是我使用的相同的代码,它的工作原理。问题必须在别处。

的问题是不是代码,它在界面生成器设置。 (我仍在使用的Xcode 3.2所以在我的世界界面生成器是一个单独的应用程序。)确保对文件的所有者在厦门国际银行类设置为NSWindowController和其window出口连接到窗口。

如果你不这样做,可见在启动被设置为窗口,你会得到完全你描述的症状。这是因为initWithWindowNibName加载了NIB文件,并且由于可见在启动标志而显示窗口。但是,如果您查看NSWindowController实例的window属性,则会看到它仍然为零。这就是为什么当您再次拨打showWindow时窗口不会重新显示。 IB中的连接将窗口与控制器相关联。

Here's a project that has IB set up correctly.

下面是IB的相关设置:

The relevant settings for IB

+0

你能提供与此代码的作品简单的示例应用程序,请? – nukl

+0

我会通过编辑我的答案来回复此问题。 – SSteve

+0

是的,它现在有效。太好了,谢谢! – nukl

2

你取消了窗口在Interface Builder中的 “关闭时释放” 复选框(未建成的Xcode 4)?

+0

是啊,这是未经检查,看看 - https://img.skitch.com/20110806-bwf1kifdb195ssm6i5gj6mb3f1.jpg – nukl

+0

是你的窗口控制器(文件所有者的界面生成器)“窗口”插座连接到窗口? – Enchilada

+0

是,只有上面的窗口 – nukl

0
[window makeKeyAndOrderFront:self]