4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ViewControllerのLifeCycle(ライフサイクル)

Last updated at Posted at 2021-05-22

LifeCycle(ライフサイクル)とは

日常生活でも聞くことが多いライフサイクルと言う単語ですが、swiftのライフサイクルとはUIKitによって提供され、アプリの起動、状態遷移、終了などを管理する概念のことです。
それに付随するものとして、ViewControllerのライフサイクルメソッドというものがるので、今回はそれについて紹介していきます。

ViewControllerのライフサイクルメソッド

ViewControllerは以下のライフサイクルメソッドを持ちます。

  • loadView
  • viewDidLoad
  • viewWillAppear
  • viewDidAppear
  • viewWillLayoutSubviews
  • viewDidLayoutSubviews
  • viewWillDisappear
  • viewDidDisappear

viewDidLoadはviewController生成時にデフォルトで書かれているため、馴染み深いと思います。

loadView

viewを生成したときに一度だけ呼ばれます。あまり使う機会はないかもしれません。

viewDidLoad

viewをメモリに読み込んだときに一度だけ呼ばれます。navigationやmodalから戻ってきたときには呼ばれないので、注意が必要です。

viewWillAppear

viewがメモリから読み込まれて、実際に画面に表示される直前に呼ばれるメソッドです。navigationやmodalから戻ってきたときにも呼ばれます。

viewDidAppear

viewがメモリから読み込まれて、実際に画面に表示された直後に呼ばれるメソッドです。(ヒエラルキーに追加される、といいます)

viewWillLayoutSubviews

UIパーツをaddSubViewするときや、デバイスの画面の向きが変更される直前に呼ばれるメソッドです。

viewDidLayoutSubviews

addSubViewなどの処理が完了した直後に呼ばれるメソッドです。
ここで見た目が確定されるので、boundsなどのプロパティを利用する処理がある場合はここに書きます。

viewWillDisappear

viewが画面から削除される直前に呼ばれるメソッドです
たとえnavigationController等で遷移したとしても、画面から削除されているということになるので、呼ばれることになります。viewWillAppearと対応させると覚えやすいです。

viewDidDisappear

viewが画面から削除された直後に呼ばれるメソッドです。(ヒエラルキーから取り除かれる、といいます)



これでライフサイクルメソッドは最後です。たとえば

  • 背景色の変更やボタンの丸みの変更など、一度実行すれば良い処理をviewWillAppearに記述する。
  • モーダル遷移先でデータの変更をして、それを反映させる処理をviewDidLoadに書いてしまい、画面に値が反映されない。
    といった問題を起こさないためにも、ライフサイクルメソッドを理解することは重要となります。

サンプルアプリ

ライフサイクルの順序や実行されるかどうかを実際に確認するために、サンプルアプリを作成しました。それぞれのライフサイクルメソッドの中で、関数名を出力するようになっています。
navigationでの遷移やtabBarでの遷移とも絡めてコンソールに出力される様になっているので、もっと細かく知りたいという方は、ぜひgitからクローンして、いろいろな処理を試してみてください。

スクリーンショット 2021-05-22 14.31.33.png
- ライフサイクルサンプルアプリ

さいごに

意外と処理通りの命名規則のため、英語がわかれば覚えやすいと思います。
みなさんもライフサイクルメソッドを理解して、処理を適切な場所に記述してみましょう!

参考文献

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?