ライフサイクル
ビューコントローラにて画面表示時に呼び出されるメソッドのライフサイクルになります。
下記の順番にて呼び出されますので必要に応じてオーバーライドします。
サンプル
// Life Cycle // UI 部品を View へセットする場合はこちらをオーバーライドします。 // ただし、UI 部品のセットはこのメソッドでなくても問題ありません。 override func loadView() { super.loadView() print("loadView") } // 初期表示時に必要な処理を設定します。 override func viewDidLoad() { super.viewDidLoad() print("viewDidLoad") } // 画面に表示される直前に呼ばれます。 override func viewWillAppear(animated: Bool) { super.viewDidDisappear(animated) print("viewWillAppear") } // 画面に表示された直後に呼ばれます。 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) print("viewDidAppear") } // 画面から非表示になる直前に呼ばれます。 override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) print("viewWillDisappear") } // 画面から非表示になる直後に呼ばれます。 override func viewDidDisappear(animated: Bool) { super.viewDidDisappear(animated) print("viewDidDisappear") } // メモリーが不足にてインスタンスが破棄される直前に呼ばれます。 override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() print("didReceiveMemoryWarning") }
実行ログ
画面1表示 → 画面2へ遷移 した場合
画面1 loadView 画面1 viewDidLoad 画面1 viewWillAppear 画面1 viewDidAppear 画面2へ遷移実行 画面2 loadView 画面2 viewDidLoad 画面1 viewWillDisappear 画面2 viewWillAppear 画面2 viewDidAppear 画面1 viewDidDisappear
各オーバーライドメソッドの説明
loadView
xib を利用せず、コード内にて View を作成する場合はオーバーライドします。
コード内にて View を作成する場合はこちらにコーディングしましょう。
ただし、UI 部品のセットはこのメソッドでなくても問題ありません。
viewDidLoad
xib 読み込み UI 生成後に呼ばれます。
初期表示に必要なデータの作成と、View に表示するデータを作成し View へ設定します。
初期化後、1回だけ呼ばれます。ただし、インスタンスが破棄、メモリー不足、バックグランドにて OS が削除された場合は除きます。
つまり、インスタンスが存在した場合は、呼ばれません。
viewWillAppear
ViewController が画面に表示される直前に呼ばれます。
インスタンスが破棄されず、ナビゲーションコントローラ等にて表示される直前のたびに呼ばれます。
viewDidAppear
ViewController が画面に表示された直後に呼ばれます。
インスタンスが破棄されず、ナビゲーションコントローラ等にて表示された直後のたびに呼ばれます。
viewWillDisappear
ViewController が画面から非表示になる直前に呼ばれます。
他の画面へ遷移時に画面が非表示になる前に処理をしたい場合、こちらをオーバーライドします。
viewDidDisappear
ViewController が画面から非表示になる直後に呼ばれます。
他の画面へ遷移時に画面が非表示になった直後に処理をしたい場合、こちらをオーバーライドします。
didReceiveMemoryWarning
メモリーが不足にてインスタンスが破棄される直前に呼ばれます。
メモリー不足発生時に画面の状態を保持したい場合にオーバーライドします。
おすすめの本