Cocoa app:如何关闭窗口而不终止应用程序?

时间:2017-06-30 23:32:58

标签: swift cocoa

我正在使用Swift开发Cocoa应用程序。该应用程序打开一个窗口,用户可以使用菜单打开另一个窗口。问题是当使用红色按钮关闭任一窗口时,应用程序终止。我不想要这种行为;我希望应用程序保持活力。它并没有崩溃; AppDelegate的applicationWillTerminate方法执行。

AppDelegate的方法是applicationShouldTerminateAfterLastWindowClosed,它返回false,但是这个方法永远不会被执行。

我是一个相当称职的Swift iOS开发人员;这是我的第一个真正的Cocoa应用程序,我怀疑这很简单,但我现在感到困惑。如何在不完全终止应用程序的情况下关闭窗口?

编辑:以下是一些代码段:

在AppDelegate中:

func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
    Log.methodEnter()
    return false
}

同样在AppDelegate中,打开一个窗口的方法:

@IBAction func openVerbSettingsWindow(sender: NSMenuItem) {
    verbSettingsWindowController.showWindow (nil)

}

从windowViewController中,窗口加载和显示时执行任何操作的唯一方法:

override func windowDidLoad() {
    super.windowDidLoad()
    window?.setFrame(NSMakeRect(400.0, 100.0, 950.0, 450.0), display: true)
}

我希望这会有所帮助!

1 个答案:

答案 0 :(得分:0)

我对这个问题的回答并不感到尴尬;它与Cocoa或我的代码无关。

我有一个名为RedQuits的应用程序,它配置OS X以在该应用程序的最后一个窗口关闭时关闭应用程序,而不是让应用程序在没有窗口的情况下运行(OS X默认行为)。当我摆脱RedQuits并重新启动以便OS X恢复其默认行为时,问题就消失了。出于某种原因,当任何应用程序窗口关闭时,RedQuits会导致我的Cocoa应用程序退出。有趣的是,我发现这是因为它在Xcode中导致相同的行为:关闭一个项目窗口并关闭Xcode。