ViewController的生命週期中各方法執行順序如下:
- init—>
- loadView—>
- viewDidLoad—>
- viewWillAppear—>
- viewDidAppear—>
- viewWillDisappear—>
- viewDidDisappear—>
- viewWillUnload->
- viewDidUnload—>
- dealloc
ViewController是iOS開發中MVC模式中的C,ViewController是View的Controller(所以如此命名),ViewController的職責主要包括管理內部各個View的載入、顯示和釋放,同時負責與其它ViewController的溝通與協調。
在iOS中,有兩類ViewController:
- 一類是顯示內容的ViewController:比如UIViewController、UITableViewController等,同時還可以自定義繼承自UIViewController的ViewController。
- 另一類是ViewController容器:UINavigationViewController和UITabBarController等,UINavigationController是以Stack的形式來存儲和管理ViewController,UITabBarController是以Array的形式來管理ViewController。
從圖中可以看到,在View載入過程中首先會調用loadView方法,在這個方法中主要完成一些關鍵View的初始化工作,比如UINavigationViewController和UITabBarController等容器類的ViewController;接下來就是載入View,成功載入後,接著會調用viewDidLoad方法,這裡要記住的重點是,在loadView之前,是沒有View的,換句話說在這之前,View還沒有被初始化。完成viewDidLoad方法後,ViewController裡面才會成功載入view。
在Controller中創建View有兩種方式,一種是透過code產生、一種是透過Storyboard或Interface Builder來建立,後者有比較直觀的配置View的外觀和屬性。
多寫幾次專案,自然就有感覺了:)