【SwiftUI】Viewの表示/非表示時のアクション定義(onAppear、onDisappear)

Viewが表示または消えた時に実行するアクションを指定方法を解説します。

スポンサーリンク

環境

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

【Xcode】12.5RC
【Swift】5.4
【iOS】14.5
【macOS】Big Sur バージョン 11.1
スポンサーリンク

基本的な使い方

Viewに対して下記のModifierを使用します。

対象Viewが表示された時に実行するアクションを、クロージャーで指定します。
View表示イベントにアニメーションが関連付けられている場合、クロージャはアニメーションの開始時に実行されます。

こちらは、対象Viewが消えた時に実行するアクションを、クロージャーで指定します。
View表示イベントにアニメーションが関連付けられている場合、クロージャはアニメーションの終了時に実行されます。

使用例

テキストViewが表示されるあるいは消える時にメッセージを出力する例です。

使用例

スポンサーリンク

画面遷移時のアクションを指定する

画面のTop Viewに対して使用すると、画面遷移時および終了時のアクション指定が可能です。

NavigationViewを使った画面遷移の場合、NavigationViewの内側のViewが切り替わる動きになりますので、画面遷移した際元のViewの終了イベントが発生します。
また、画面から戻ってきた際に新たに元のViewの表示イベントが発生します。

次のサンプルを実行し、動きを確認してみて下さい。

画面遷移時のアクションを指定する

出力ログ

スポンサーリンク

画面遷移時のアクションでエラーになる場合

画面遷移時のアクションの内容によっては、実行時にエラーになるケースがあります。
実行するiOSのバージョンによっても動きが異なるようです。
対処方法は次の記事を参考にして下さい。

【SwiftUI】画面遷移時にアラートが表示されない不具合
画面遷移時にアラートが表示されない不具合に遭遇したので、記録を残しておきます。
スポンサーリンク

あわせて読みたい記事

【SwiftUI】NavigationViewの使い方
(2020/11/6 更新)階層的な画面遷移を管理するNavigationViewの使い方を解説します。
スポンサーリンク
SwiftUI
カピ通信