ARC環境
單個viewController的生命周期
- initWithCoder:(NSCoder *)aDecoder:(如果使用storyboard或者xib)
- loadView:加載view
- viewDidLoad:view加載完畢
- viewWillAppear:控制器的view將要顯示
- viewWillLayoutSubviews:控制器的view將要布局子控件
- viewDidLayoutSubviews:控制器的view布局子控件完成
- 這期間系統可能會多次調用viewWillLayoutSubviews 、 viewDidLayoutSubviews 倆個方法
- viewDidAppear:控制器的view完全顯示
- viewWillDisappear:控制器的view即將消失的時候
這期間系統也會調用viewWillLayoutSubviews 、viewDidLayoutSubviews 兩個方法 - viewDidDisappear:控制器的view完全消失的時候
多個viewControllers跳轉
當我們點擊push的時候首先會加載下一個界面然后才會調用界面的消失方法
- initWithCoder:(NSCoder *)aDecoder:ViewController2 (如果用xib創建的情況下)
- loadView:ViewController2
- viewDidLoad:ViewController2
- viewWillDisappear:ViewController1 將要消失
- viewWillAppear:ViewController2 將要出現
- viewWillLayoutSubviews ViewController2
- viewDidLayoutSubviews ViewController2
- viewWillLayoutSubviews:ViewController1
- viewDidLayoutSubviews:ViewController1
- viewDidDisappear:ViewController1 完全消失
- viewDidAppear:ViewController2 完全出現
小結:
整個控制器聲明周期: viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear