[SwiftUI]アイテム(item)引数を持つAlertの使い方

SwiftUI
スポンサーリンク

Item引数

コード, コーディング, コンピュータ, データ, 開発, イーサネット, Html, プログラマ

Itemを引数にもつalertモディファイアの定義は次のようになっています。

func alert<Item> (item : Binding<Item?> , content : (Item) -> Alert ) -> some View

item : アラートを表示するためのオブジェクトを先頭に$をつけて格納します。
content : itemからAlertを表示させます

itemにオブジェクトが格納されたときに、アラートを表示させます。

itemに格納するオブジェクトは、Identifiableプロトコルに準拠していて、表示するアラートの情報を持っている必要があります。

つまり、itemの値があるかどうかを確認し、値があるならアラートを呼び出すと言うことです。

使用例


//Identifiableプロトコルに準拠した構造体
struct ShowAlert : Identifiable {
    var id = UUID()
    var title: String
    var message :String
    var button : String
}

struct TestView: View {
    
    @State var showAlert : ShowAlert?
    
    var body: some View {
        
        Button(action: {
            //アラートオブジェクトを生成
           showAlert = ShowAlert(title: "アラート", message: "itemのアラートです", button: "OK")
        }, label: {
            Text("アラート")
        })
        .alert(item : $showAlert) { item in
            Alert(title: Text(item.title),
                  message: Text(item.message),
                  dismissButton: .default(Text(item.button)))
        }
    }
}

まず、Identifiableプロトコルに準拠したAlertオブジェクトを用意しています。

次にオブジェクトを格納する状態変数を用意し、alertモディファイアで設定します。

Buttonを押したタイミングでAlertのオブジェクトを生成させれば、Alertが表示されるようになります。

まとめ

Item引数を持つアラートは、アラート用のオブジェクトを用意して使います。

アラート用のオブジェクトは、identifiableプロトコルに準拠させる必要があります。

おすすめの記事

参考

コメント

タイトルとURLをコピーしました