私はSwiftを使ってCocoaアプリを開発しています。アプリはウィンドウで開き、ユーザーはメニューを使用して別のウィンドウを開くことができます。問題は、いずれかのウィンドウが赤いボタンを使用して閉じられると、アプリケーションが終了することです。私はその行動を望んでいません。私は、アプリを生き残らせたい。それはクラッシュしない。 AppDelegateのapplicationWillTerminateメソッドが実行されます。Cocoaアプリ:アプリを終了せずにウィンドウを閉じるには?
AppDelegateには、falseを返すapplicationShouldTerminateAfterLastWindowClosedメソッドがありますが、このメソッドは決して実行されません。
私は合理的に有能なSwift iOS開発者です。これは私の最初の本物のCocoaアプリであり、これは単純なものだと思われますが、今私は困惑しています。アプリを完全に終了せずにウィンドウを閉じるにはどうすればよいですか?
編集:ここにいくつかのコードスニペットは、次のとおりです。AppDelegateで
:
AppDelegate、ウィンドウを開くための方法でもfunc applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
Log.methodEnter()
return false
}
:
@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、またはAppDelegateをXibファイルで使用しているかどうかによって異なります。 –
XcodeでデフォルトのCocoaアプリケーションを作成して実行しましたが、ウィンドウを閉じると終了しないので、何かのように聞こえます。あなたのプログラムは何ですか?ソースコードを見ることはできますか? – Ssswift
私はこのアプリの作成を始めたときに機能しましたが、2番目のウィンドウを追加すると、終了動作が開始されました。だから、その2番目のウィンドウとは何かがあるはずですが、私はそれが何であるかは分かりません! El Tomatoに応答して、2番目のウィンドウはNSWindowで、NSWindowControllerサブクラスによって制御され、.XIBファイルが使用されます。 – johnz