[SwiftUI]「アラート(Alert)」が表示されない3つの原因

SwiftUI
スポンサーリンク

原因

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

アラートが表示されないときの原因は、主に3つあります。

toolbar内に入っている

//省略
.toolBar {
    toobarItem(placement : .bottom) {
              //ビュー
    }
    .alert(/*アラート構造体*/)
}

1つ目は、toolBar内にalertモディファイアが入っていることです。

toolBarのビューは、他のビューとは扱いが違っているので、アラートが上手く表示されないです。

なので、toolBarの中にalertモディファイアがあるなら、toolBar外の別のビューに移しましょう。

連続表示

2つ目は、アラートを連続で表示させていることです。

連続というのは、アラートのボタンをタップしたら、別のアラートが表示されるというものです。

連続アラートを使っている場合は、2つ目のアラートで時間を空けたりするのがいいようです。

以下の記事が参考になります。

【SwiftUI】Alert を連続表示しようとすると2つ目が出ない問題と対処方法 – .NET ゆる〜りワーク

alertモディファイアの重複

3つ目は、alertモディファイアが重複していることです。

    
    @State var onAlert = false
    @State var onAlertT = false
    
    var body: some View {
        VStack {
            Button(action: {
                self.onAlert = true
            }) {
                Text("アラート1")
            }
            .padding()
            Button(action: {
                
                self.onAlertT = true
            }) {
                Text("アラート2")
            }
            .padding()
        }
        .alert(isPresented: $onAlert) {
            Alert(title: Text("アラート1"), message: Text(""),dismissButton: .default(Text("OK")))
            }
        .alert(isPresented: $onAlertT ) {
            Alert(title: Text("アラート2"), message: Text(""),dismissButton: .default(Text("OK")))
            }
        
    }

上記のように、alertモディファイアを重複させると、2つ目のアラートは表示されるのですが、1つ目が表示されません。

これは、モディファイアは重複すると、後から書いた方で上書きされるからです。

2つ目のアラートで上書きされて、1つ目のアラートがアラートがなくなると言うことです。

もし、2つのアラートを使い分けたい場合は、条件分岐などを使うようにしましょう。

まとめ

アラートが表示されなくなる原因は、次の3つです。

  • toolBar内に入っている
  • 連続表示
  • alertモディファイアが重複している

当てはまる場合は、修正しましょう。

おすすめの記事

コメント

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