2010-04-15 67 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