すらぼうの開発ノート

モバイルアプリエンジニアのメモ

【Swift】UIViewControllerのライフサイクル

UIViewControllerにはライフサイクルがあり、ライフサイクルの節目ごとに処理を行うためのメソッドが用意されている。 以下で各メソッドの説明、およびサンプルコードの紹介を行う。

メソッド

viewDidLoad()

  • ViewControllerが管理する画面が読み込まれたら最初に呼ばれる
  • IBOutlet、IBActionにアクセスできるようになる
  • 一度だけ呼ばれる

viewWillAppear()

  • 画面が表示される直前に呼ばれる
  • 特定のコンポーネントのisHiddenプロパティを指定するのに適したタイミング

viewDidAppear()

  • 画面にコンポーネントが表示された直後に呼ばれる
  • ユーザーに認識してもらうためのものを開始するのに適したタイミング
    • アニメーション
    • タイマー
    • ...

viewWillDisappear()

  • 画面から別の画面に遷移する前に呼ばれる
    • モーダルなどを閉じかけると呼ばれる
  • 後片付けを行うのに適したタイミング
    • アニメーション終了
    • タイマー停止
    • ナビゲーションバーの非表示

viewDidDisappear()

  • 画面から別の画面に遷移後に呼ばれる
  • アプリをキルした際にも呼ばれる

サンプルコード

import UIKit

class SomeViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print("call viewDidLoad")
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("call viewWillAppear")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("call viewDidAppear")
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("call viewWillDisappear")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("call viewDidDisappear")
    }
}