最后一个窗口关闭后退出应用程序

时间:2011-05-25 05:21:24

标签: cocoa macos nswindow nsapplication

我想在最后一个主窗口关闭时关闭我的应用程序。由于以下原因,我无法使用applicationShouldTerminateAfterLastWindowClosed:
1.在显示主窗口之前,会显示一个确认窗口,当此窗口关闭时,应用程序不应退出 2.即使有任何帮助窗口仍然打开,应用程序应在关闭主窗口后退出。

2 个答案:

答案 0 :(得分:13)

您仍然可以使用applicationShouldTerminateAfterLastWindowClosed:

将其写入返回NO,直到您第一次显示主窗口为止。从那时起让它返回YES

NSPanel的实例不计入打开的窗口。因此,如果您的帮助窗口是NSPanel,这将有效。

答案 1 :(得分:0)

您需要做的是将控件类设置为主窗口的委托,然后使用NSNotificationCenter添加一个带有NSWindowWillCloseNotification的观察者,并将yourWindow作为对象。所以喜欢这个

NSNotificationCenter *c = [NSNotificationCenter defaultCenter];
[c addObserver:self selector:@selector(yourSelector) name:NSWindowWillCloseNotification object:yourWindow];

现在,当主窗口关闭时,将调用youSelector方法,因此在该方法中只有exit(0);

有关详细信息,请转到here并查看windowWillClose