[SwiftUI] macOS での SwiftUI アプリの終了

SwiftUI2021

     
⌛️ < 1 min.
忘れてしまった時に コピペで使用できるスニペットシリーズ macOS アプリ終了

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Sonoma Beta 7
  • Xcode 15 Beta 8
  • iOS 17 Beta 8
  • Swift 5.9

アプリの終了

iOS アプリではほとんど意識しませんが、macOS アプリでは、メニューバーに “Quit” メニューが用意され、ユーザーがアプリを終了できるようになっています。

Xcode が作成したテンプレートを使うと、その辺りは処理されているので 特にコードを書く必要はありません。

しかし、メニューバーアプリを作ると、自分でコードを書いて アプリを終了させることが必要となります。

# なお、メニューバーアプリから 終了できないと AppStore Review で Reject されます。

SwiftUI からは、アプリ終了できない?!

現時点(2023.Sep) では、SwiftUI は、アプリの終了をサポートしていません。

もちろん、App プロトコル(?) はそのような機能をサポートしているはずですが、開発者向けに 公開はされていません。

SwiftUI では実現できませんが、もちろん(?) AppKit を使えば 可能となります。

NSApplication

アプリ全体に関わるので、使用するクラスは、NSApplication です。
Apple のドキュメントは、こちら

アプリを終了するには、terminate メソッドを使います。
Apple のドキュメントは、こちら

例えば、押下したときに アプリが終了するボタンは以下のようになります。

    Button(action: {
        NSApplication.shared.terminate(nil)
    }, label: {
        Text("Quit")
    })

まとめ

プログラム的にアプリを終了させる方法

プログラム的にアプリを終了させる方法
  • SwiftUI には用意されていない
  • NSApplication を使用する
  • NSApplication.shared.terminate を呼び出すことで終了できる

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

SwiftUI おすすめ本

SwiftUI を理解するには、以下の本がおすすめです。

SwiftUI ViewMatery

SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。

英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。

View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。

超便利です

SwiftUIViewsMastery

販売元のページは、こちらです。

SwiftUI 徹底入門

# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。

Swift学習におすすめの本

詳解Swift

Swift の学習には、詳解 Swift という書籍が、おすすめです。

著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。

最新版を購入するのがおすすめです。

現時点では、上記の Swift 5 に対応した第5版が最新版です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です