2010-04-15 40 views
3

我有一個自定義NSWindowController子類初始化過程中加載NIB文件是這樣的:如何關閉窗口(卸載NIB)?

self = [super initWithNibNamed:@"myNib"]; 
if (self != nil) { 
    [self window]; 
} 

筆尖包含一些自定義視圖和一些其他控件。 NSWindowController是該文件的所有者,並且至少有一個視圖甚至與其綁定。

簡單地說,我需要做些什麼才能關閉並釋放窗口?我花了整整一天的時間試圖弄明白這一點,但我仍然無能爲力。

回答

6

您不要卸載筆尖; 「加載」它只是解壓縮存檔在其中的對象。這不是一個無限期持續的狀態;這是一個瞬間的行動。一旦你解除了對象的存檔,它來自哪裏並不重要。

如果你不是在一個窗口控制器,則:

但是,既然你是在一個窗口控制器,只是send yourself a close message

另請參閱基於文檔的應用程序概述(基於文檔的應用程序是窗口控制器的主要用戶)中的「Window Closing Behavior」

13

謝謝@peter hosey。

[self close]; // will work only if your nib is wired up correctly. 

打開您的文件的筆尖。在窗口中,需要將窗口的「引用出口」連接到「文件所有者」並選擇「窗口」。否則什麼都不會。

+1

Thanks @John Ballinger!你救了我兩天!正確設置筆尖的添加是線索。 – swdev 2011-09-06 03:23:20

+0

絕對是「爲什麼不關閉工作?!?!」的快速解決方案。 – stevesliva 2014-04-04 06:43:17