如何覆盖关闭按钮操作以显示确认对话框? 将代码放在app delegate的
中applicationWillTerminate
是这种代码的正确位置吗?
我有一个使用CloudKit的应用程序。 它会不断地保存,导致尝试保存到iCloud时出错。
所以我试图在退出之前显示一个对话框以确认用户是否想要同步。
答案 0 :(得分:3)
如果你想阻止一个窗口关闭,那么NSWindow的代表就是它所在的地方。无论是AppDelegate(这是大多数Xcode模板的默认设置)还是NSWindowController,如果这就是你呈现窗口的方式。您要从NSWindowDelegate实施的方法是-windowShouldClose:
或-windowWillClose:
。如果您想阻止关闭窗口,只需从NO
返回-windowShouldClose:
。
如果您要停止退出应用,则应查看NSApplicationDelegate并覆盖-applicationShouldTerminate:
并返回NSTerminateCancel
以阻止该应用终止。
简而言之,"应该"方法允许你阻止动作发生," will"方法只是说它会发生,你可以处理它。