【SwiftUI】複数のアラート(alert)を使う方法

1画面内で複数のアラートを使い分ける方法を解説します。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】11.6
【Swift】5.2.4
【iOS】13.6
【macOS】Catalina バージョン 10.15.6
スポンサーリンク

複数のアラートが使えないケース

次のコードはボタンを押すたびに、表示されるアラートが切り替わるサンプルです。
コンパイルエラーこそ発生しませんが、想定通りには動かずに、「アラート2」しか表示されません。
isPresentedで示す表示フラグを変えているにもかかわらず、2つめの.alert定義が1つめを上書きしてしまう為です。
同一のViewあるいは親子関係にあるViewにアラートを定義した場合、定義が上書きされてしまい、先に定義したアラートは無視されてしまいます。

複数のアラートが使えないケース

スポンサーリンク

複数のアラートを使い分ける

親子関係に無いViewに異なるアラートを定義すると各々が有効に機能します。
アラートを定義する適当なViewが無い場合は、次の例のようにZStackで重ねて配置したダミーのView(Text(""))を使うと良いでしょう。

複数のアラートを使い分けたケース

スポンサーリンク

あわせて読みたい記事

【SwiftUI】アラートの使い方(alert)
(2020/8/13 更新)ユーザーに確認を促すアラートダイアログを表示する、.alert()の使い方について解説します。
【SwiftUI】Modifierの適用順
Viewに様々な変更を適用するModifierですが、適用する順番によって挙動が変わる事があります。これはModifierが既存のViewのプロパティを変更しているのでは無く、変更を適用した新しいViewを毎回作成している事に関係します。...
Kindle unlimited 読み放題で読める管理人のおすすめ本です!
スポンサーリンク
SwiftUI
カピ通信