查看仍处于打开状态的控制器会使我的应用无法退出

时间:2015-01-17 16:53:26

标签: swift cocoa viewcontroller

我想开发一个我开发的iOS应用程序的快速可可版本来帮助我测试,正如您可能已经知道的那样 - 它并不快,但我已经学到了很多东西。我只留下一个小问题。好吧,我这样做的方式可能有些不对,但是现在它除了这个小东西之外几乎都很好 - 我无法弄清楚如何退出应用程序结束。

我很确定它是因为我有一些视图控制器仍然活跃堆叠在片状样式的segue上。有没有办法关闭所有视图控制器并退出应用程序?或者如果没有,我该怎么做?我已经尝试了各种各样的东西 - 我知道我可以在3个视图控制器中的每个视图控制器上放一个“退出”按钮,然后再回到原来的“介绍”类型屏幕,这是你能做到的唯一屏幕退出我的应用程序,但我并不是真的希望人们必须这样做。

1 个答案:

答案 0 :(得分:3)

如果您的应用由于显示某些模态视图而无法退出,您可以尝试将NSWindow preventsApplicationTerminationWhenModal属性设置为NO

window.preventsApplicationTerminationWhenModal = false //--swift
[window setPreventsApplicationTerminationWhenModal:NO] //--objc

这应该在你打开的每个模态窗口上完成。

编辑:

要记住的一点是,您应该在与警报关联的窗口上设置上述属性 - 而不是主窗口。如果我以编程方式创建NSAlert,那么这将起作用:

let alert = NSAlert()
let w = alert.window as NSWindow //-- alert.window return `id`, so let's cast it
w.preventsApplicationTerminationWhenModal = false

因此,您可以将工作表绑定到变量,然后设置其preventsApplicationTerminationWhenModal属性,也可以尝试工作表本身的运行时属性(指定完整的键路径,包括window.prevents ... )。