当窗口关闭时如何退出Cocoa应用程序?

91

当我点击左上角红色按钮时,我需要退出Cocoa应用程序。

enter image description here

我在这个页面找到了以下内容:

因此,您首先需要将要关闭的窗口连接到nib中的IBOutlet。 对于此示例,我将窗口连接到名为“mainWindow”的outlet。

我该怎么做呢? 我在xib文件中找到了Windows,但如何将其连接到nib中的IBOutlet?

或者,有没有办法通过点击红色按钮退出cocoa应用程序?

编辑

我应该将代码放在“自动生成的委托文件”中。

2个回答

240

应用程序代理有一个可选的方法可以自动完成这个操作。你只需要将它添加到实现中即可,无需创建出口或任何其他东西。

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
    return YES;
}

我尝试了,但它不起作用。我猜这是因为我的主窗口没有从NSWindowController子类化(http://recursive-design.com/blog/2007/04/13/quit-cocoa-app-on-window-close/)。 - prosseek
15
它确实有效,但你可能把代码放错位置了。确保它在你的应用程序委托中。 - Caleb
如果你的实现返回NO,控制权将返回到主事件循环,并且应用程序不会被终止。如果你返回YES,随后将调用你的代理的applicationShouldTerminate:方法来确认应用程序是否应该被终止。 - pje
1
工作得很好!简单到难以置信 :) - slboat
4
只是想提供Swift3版本:func applicationShouldTerminateAfterLastWindowClosed(_ theApplication: NSApplication) -> Bool { return true } - Cristi Băluță

8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接