Xamarin.iOS ViewWillAppearとViewDidApperのイベント発生タイミング

別画面から戻るときに発生するイベント

Xamarin.iOSでは、別の画面が閉じられ、自分の画面が表示されるタイミングで起動するイベントとして、以下の2つが存在します。

  • ViewWillAppear
  • ViewDidAppear

そして、この2つのイベントは、発生するタイミングが若干異なります。
なお、イベントが発生する順序は、"ViewWillAppear"→"ViewDidAppear"となります。

ViewWillAppearの発生するタイミング

"ViewWillAppear"は、イベント名に"Will"と入っている通り、未来に自分の画面が表示されることが決まったタイミングでイベントが発生します。
つまり、以下の実装を行っていた場合、画面Bで"Unwind Segue"が実行されたタイミングで実行されることになります。

【実装】

  • 画面Aで"ViewWillAppear"イベントを実装している
  • 画面A→画面Bの画面遷移を実装している
  • 画面Bで"Unwind Segue"により画面Bを閉じるようにしている
  • 画面Bが閉じることで画面Aが表示される

また、画面Bで画面を閉じるタイミングで実行される別のイベントを実装している場合は、画面Bが閉じられるタイミングで、画面Bで実行されるイベントより先に画面Aの"ViewWillAppear"イベントが実行されます。

ViewDidAppearの発生するタイミング

"ViewDidAppear"は、イベント名に"Did"と入っている通り、自分の画面が表示した後でイベントが発生します。
そのため、上記の実装と同じ実装をした場合、画面Bのすべてのイベントが完了した後に発生することになります。

つまり、画面Bで画面を閉じるタイミングで実行される別イベントがあった場合は、画面Bのイベントがすべて実行した後で、画面Aの"ViewDidAppear"イベントが実行されます。

画面を閉じるときのイベントの発生順序

遷移先画面(上記実装の画面B)の"Unwind Segue"→遷移元画面(上記実装の画面A)の"ViewWillAppear"イベント→遷移先画面の画面終了時のイベント→遷移元画面の"ViewDidAppear"イベント

※すべてのイベントについて確認しているわけではありません。

Amazonアフィリエイトのコーナー

Xamarinネイティブによるモバイルアプリ開発 C#によるAndroid/iOS UI制御の基礎

Xamarinネイティブによるモバイルアプリ開発 C#によるAndroid/iOS UI制御の基礎

かずきのXamarin.Forms入門

かずきのXamarin.Forms入門

Xamarinエキスパート養成読本 (Software Design plus)

Xamarinエキスパート養成読本 (Software Design plus)

独習C# 新版

独習C# 新版

[改訂新版]C#ポケットリファレンス

[改訂新版]C#ポケットリファレンス

スマートフォンアプリマーケティング 現場の教科書

スマートフォンアプリマーケティング 現場の教科書