我正在使用Swift在Cocoa應用程序上工作。應用程序將打開一個窗口,用戶可以使用菜單打開另一個窗口。問題是,當使用紅色按鈕關閉任一窗口時,應用程序終止。我不想要那種行爲;我希望應用保持活力。它不會崩潰; AppDelegate的applicationWillTerminate方法執行。可可應用程序:如何關閉窗口而不終止應用程序?
的AppDelegate中有方法applicationShouldTerminateAfterLastWindowClosed,它返回假,但這種方法從未得到執行。
我是一個合理的Swift iOS開發人員;這是我第一個真正的可可應用程序,我懷疑這很簡單,但我現在很困惑。如何在不終止應用程序的情況下關閉窗口?
編輯:下面是一些代碼段:
在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)
}
我希望這有助於!
這取決於您是使用NSViewController,NSWindowController還是僅使用帶有Xib文件的AppDelegate。 –
我剛剛在Xcode中創建了一個默認的Cocoa應用程序,並運行它,當我關閉窗口時,它不會退出 - 所以這聽起來像是你正在做的事情。你的計劃是什麼?我們可以看到源代碼嗎? – Ssswift
當我開始編寫這個應用程序,它的工作,但是當我添加第二個窗口時,終止行爲開始。所以它必須與第二個窗口有關,但我肯定不知道它是什麼!爲了響應El Tomato,第二個窗口是NSWindow,它由NSWindowController子類控制,並使用.XIB文件。 – johnz