Make a Cocoa application quit when the main window is closed?
如何使Cocoa应用程序在主窗口关闭时退出?否则,你必须点击应用程序图标,然后点击菜单中的退出。
您可以实现
将此代码段添加到应用程序的代理:
1 2 3 | -(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app { return YES; } |
因为问题主要是关于cocoa编程,而不是关于特定的语言(Objective-C),这里是查克和史蒂夫的快速版本答:
1 2 3 4 5 6 7 8 9 10 | @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool { return true } // Your other application delegate methods ... } |
对于Swift 3,将方法定义更改为
1 2 3 | func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } |
你的主窗口应该有一个IBoutlet。例如:iboutlet nswindow*主窗口;
1 2 3 4 5 6 | - (void)awakeFromWindow { [mainWindow setDelegate: self]; } - (void)windowWillClose:(NSNotification *)notification { [NSApp terminate:self]; } |
如果这不起作用,您应该在nsnotificationCenter中为通知nswindowwillclosenotification添加一个观察者。别忘了检查一下右窗是否关上了。