2011-08-05 91 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]