【iOS】画面遷移とviewDidLoad・viewDidAppearの関係

swiftやってて、ちょっとハマったので覚書。

たとえば画面Aと画面Bがあったとする。
画面Bから画面Aに戻るための画面遷移には色々な方法があって、

①storyboardのセグエを使う(Controlを押しながら遷移したい画面までドラッグして接続)

②コードで遷移させる

var next:ViewController = storyboard!.instantiateViewControllerWithIdentifier(“home”) as! ViewController
self.presentViewController(next as UIViewController, animated: true, completion: nil)

③unwindを使う(Controlを押しながら上のExitボタンまでドラッグして接続)

④コードで戻らせる

dismissViewControllerAnimated(false, completion: nil)

以上4つが主なものかと思う。

そして、それぞれの画面遷移がなされたときに、viewDidLoad・viewDidAppearがどう機能するのかを調べてみた。

結果。

①storyboardのセグエを使う
②コードで遷移させる
viewDidLoad・viewDidAppearの両方を通る。

③unwindを使う
④コードで戻らせる
viewDidLoadは通らず、viewDidAppearのみを通る。

上の2つは新たにインスタンス化するということなんだろう。
勉強になった(^-^)★

Pocket