SwiftUIにおけるアラート機能は、Alert構造体を使って簡単に実装することができる。

実装の手順はざっくり以下の流れとなる。

  1. アラートの表示・非表示を管理する状態変数を定義し、alertモディファイアにバインドさせる
  2. alertモディファイアにAlert構造体を渡す。

手順はモーダル(ポップアップ)用のsheetモディファイアとほとんど同じだ。

サンプルコード

まずは簡単な実装例を見ていこう。

struct ContentView: View {
    @State var showingAlert = false
    
    var body: some View {
        Button(action: {
            self.showingAlert = true
        }) {
            Text("アラートを表示する")
        }
        .alert(isPresented: $showingAlert) {
            Alert(title: Text("警告"),
                  message: Text("植民地が攻撃されています!"),
                  dismissButton: .default(Text("OK")))
        }
    }
}

コード解説

まず2行目でアラート表示管理用の状態変数showingAlertを定義。

5行目でアラートを表示させるボタンを定義。

6行目ではボタンが押された時の処理として、showingAlertの値をtrueに変更している。

そして10行目でalertモディファイアの登場。
isPresented引数にshowingAlertを渡し、状態変数がtrueの場合に11行目以降のAlertが表示される。

このコードをXCodeのライブプレビュー機能で実行する。

ボタンをタップすると、

アラートが表示され、dismissButton引数に定義したボタンをタップするとアラートが閉じ、元の画面に戻る。