朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら 
Swift Windowを閉じた時にアプリケーションを終了する方法





最初に表示されるウィンドウを閉じた時にアプリケーションも終了する方法です。
Storyboardで上部に表示されているWindowが閉じられた時にアプリケーションを終了するようにします。
ターゲットがCocoaで言語にSwiftを設定して、XIBとかのオプションは外しておきます。
クラスをNSWindowControllerにします。
これで、Storyboardの上部のWindowを選択し、アイデンティティ インスペクタを開いてクラスを先ほどのNSWindowControllerで作成したクラスに設定します。
これから先は下記のサンプルプログラムを見て頂いて欲しいのですが、先ほどのクラスにNSWindowDelegateも継承するようにします。
windowDidLoadメソッドに一文を追加し、windowWillCloseメソッドを追加して、アプリケーションを終了する一文、NSApplication.shared.terminate(self)を追加します。
以上で最初のウィンドウを閉じる時、もちろんウィンドウの左上の×ボタンをクリックしてもアプリケーションは終了します。
NSViewControllerのviewWillDisappearメソッドでもいいのではと思う方もいるかと思いますが、ドックから「隠す」を選んで実行すると隠れた瞬間にアプリケーションが終了します。

            class MainWindow: NSWindowController, NSWindowDelegate {
                override func windowDidLoad() {
                    super.windowDidLoad()
    
                    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
                    //ここではこの一文を追加します
                    self.window!.delegate = self
                }

                //ウィンドウが閉じる直前に呼ばれる
                func windowWillClose(_ notification: Notification) {
                    //アプリケーションを終了する
                    NSApplication.shared.terminate(self)
                }
            }
        








良いやや良い普通やや悪い悪い

投稿日時評価コメント