日々精進

新しく学んだことを書き留めていきます

iOS5のViewのライフサイクルメソッド

最近仕事でObjective-Cを勉強してます。最初は「記法がきもい!あり得ない!」と思ってたけど最近なれてきた。
慣れって怖いね。。


Viewのライフサイクルメソッドではまったのでメモ。調査環境はiPad5.1シミュレータ
・ViewWillAppearは見た目上画面が表示された時でも呼ばれないことがある
画面Aと画面Bを何度も行ったり来たりする、かつaddSubViewで画面AのViewを画面AのOwner以外のViewControllerに追加する場合
ライフサイクルメソッドは以下の順序で呼ばれる。


初回表示
loadView
viewDidLoad
beforeAddSubView
viewWillAppear
afterAddSubView
viewDidAppear


画面切り替え
viewWillDisappear
viewDidDisappear


二回目表示
beforeAddSubView
afterAddSubView


二回目画面切り替え
viewWillDisappear
viewDidDisappear


注意点は以下。
・viewDidAppearはaddSubViewを呼んだタイミングでは呼ばれない。
正確にはわからないけど、多分実際に画面を描画した後に呼ばれるのでは。
・addSubView二回目以降はviewWillAppearとviewDidAppearは呼ばれない
これ、呼ばれると思ってた。。この仕様はメソッド名と齟齬があるのでは。。


上記より、viewWillAppearとviewDidAppearでは画面の初期化処理のみ行い、
画面を再表示したときも実行すべき更新処理はupdateメソッドを別に用意して自分で呼び出すようにすべきと思います。