? ? ? ? ?Swift3.0的所有界面都是由storyboard和UIViewController派生類組成的,? UIViewController在MVC模式里的作用是Controller。 如果要跟Android對比的話, 它類似于Activity和Fragment。 建議類成員變量在viewDidLoad函數里賦值,而不是在init構造函數里; 因為在viewDidLoad函數里所有的控件outlet已經賦值了。
? ? ? ?要測試界面切換的生命周期, 首先要搞明白Swift有3種界面切換方式, 即UITabBarController(界面底部是切換按鈕區),UISlpliteViewControlle(適用于iPad,左邊Menu右邊操作區)和UINavigationController(界面頂部是切換按鈕區)。 下面以Tab頁為例:
在設置多界面時可能會刪掉storyboard的入口(即第一個打開的界面, 類似于AndroidManifest的Launcher屬性), 你需要再添加那個箭頭,即選中“is initial View Controller”
顯示界面:
Controller1: awakeFromNib
Controller1: viewDidLoad? (在該函數做Model的初始化,作用類似于Android Activity的onCreate函數)
Controller1: viewWillApear animated: true
Controller1: viewWillLayoutSubView
Controller1: viewDidLayoutSubViews
Controller1: viewDidAppear animate: true
退出界面:
Controller1: viewWillDisappear animated: true
Controller1: viewDidDisappear animated: true? (在該函數或deinit函數里釋放內存,不能是耗時操作。作用類似于Android Activity的onDestory函數)
手機橫豎屏切換(模擬器用 Command和←或者→ 切換),注意執行了2次WillLayou/DidLayou。有點像Android切換橫豎屏時執行2次Activity的創建生命周期。
Controller1: viewWillTransition? (橫豎屏切換執行,參數里有屏幕寬和高)
Controller1: viewWillLayoutSubView
Controller1: viewDidLayoutSubViews
Controller1: viewWillLayoutSubView
Controller1: viewDidLayoutSubView
生命周期很簡單, 但很基礎。 想想做Android幾年的同學都記不住Fragment的生命周期, 還是要夯實基礎!