【SwiftUI】アラートの使い方(alert)

ユーザーに確認を促すアラートダイアログを表示する、.alert()の使い方について解説します。
iOS15から使い方が大きく変わりました。
iOS14以前のアラートの使い方はこちらの記事を参照してください。

(アーカイブ)【SwiftUI】アラートの使い方(alert)
(2020/8/13 更新) 本記事の説明はiOS14以前の使用方法です。iOS15以降の情報はこちらの記事を御覧ください。 ユーザーに確認を促すアラートダイアログを表示する、.alert()の使い方について解説します。

スポンサーリンク

環境

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

【Xcode】13.0
【Swift】5.5
【iOS】15.0
【macOS】Big Sur バージョン 11.6
スポンサーリンク

基本的な使い方

SwiftUIは手続き型ではなく宣言型のコーディングスタイルですが、アラートも例外ではありません。
その為、「アラートを表示する」処理を書くのでは無く、アラートを定義し、表示する条件を設定します。
アラートの定義は以下の .alert()モディファイアを使用します。

または

【引数】
"タイトル"
アラートのタイトルとして使用するテキストを第一引数で指定します。

isPresented
アラートを表示するかどうかを決定する表示フラグ変数です。
ユーザーがアラートアクションの1つをタップすると、表示フラグは自動的にfalseに戻ります。

actions
アラートに表示するアクションボタンリストをButton()のリストで定義します。
アクションが1つも存在しない場合、デフォルトで"OK"アクションが提供されます。
アラート内の全てのアクションは、処理実行後表示フラグをfalseにしてアラートを閉じます。

messages (省略可)
タイトルの下に表示する詳細メッセージをTextで定義します。
Textのスタイル指定あるいは複数のText表示はサポートされません。

使用例

下記例ではalertモディファイアをButtonに定義していますが、必ずしも対象のButtonに定義する必要はありません。
alertはButtonに連動するのではなく、あくまで表示フラグに連動する為です。

UntitledImage

スポンサーリンク

ボタンを複数設置する

ボタンは次のように複数設置できます。

UntitledImage

3つ以上設置すると次のように縦並びになります。

UntitledImage

スポンサーリンク

ボタンの表示スタイル指定

アラートダイアログに使用するボタンは、roleオプションで表示スタイルを指定できます。

指定できるのは次の3種類です。

未指定またはnil
role未指定の場合は標準の表示スタイルである、青色表示になります。

.cancel
キャンセル用の表示スタイルです。
青色のボールド表示で、2ボタンの場合は常に左側、3ボタン以上の場合は常に一番下に表示されます。
また、キャンセルボタンは最大1つしか表示されません。

.destructive
削除等の破壊的変更用の表示スタイルで、赤色表示になります。
このタイプのボタンが1つでもある場合、キャンセルボタンが自動的に追加されます。

【SwiftUI】Buttonの使い方
(2021/10/19 更新) ラベルとアクションを持つButtonの使い方を解説します。

使用例

roleが.destructiveのボタンを使用した場合キャンセルボタンは自動的に追加されます。

UntitledImage

スポンサーリンク

複数のアラートを使う

1画面の中で複数のアラートを使うには、表示フラグ変数で使い分けます。
iOS14までは、特別な工夫が必要でした。

(アーカイブ)【SwiftUI】複数のアラート(alert)を使う方法
(2020/11/30 更新) 本記事の説明はiOS14以前の内容です。iOS15以降の情報はこちらの記事を御覧ください。 1画面内で複数のアラートを使い分ける方法を解説します。

UntitledImage

スポンサーリンク

あわせて読みたい記事

【SwiftUI】Buttonの使い方
(2021/10/19 更新) ラベルとアクションを持つButtonの使い方を解説します。