視圖控制器在iOS編程中占據非常重要的位置,因此我們一定要掌握。
1.作用:
•創建和管理視圖。
•管理視圖上顯示的數據。
•設備方向變化,調整視圖大小以適應屏幕。
•負責視圖和模型之間的數據及請示的傳遞。
2. 視圖控制器剖析
視圖控制器有一個導航項,一個工具欄子項集以及一個tabbarItem項與其關聯。
3. 主要屬性
• view:控制器管理的根視圖
• title: 控制器導航欄的標題
• wantsFullScreenLayout: 是否需要全屏顯示
• interfaceOrientation: 界面方向
• navigationItem:導航子項
• editing: 是否處理編輯狀態
• hidesBottomBarWhenPushed: 入棧時隱藏底部欄
• toolbarItems: 工具欄子項集
• tabBarItem: 標簽欄子項
• editButtonItem:返回一個編輯按鈕
• parentViewController :交視圖控制器
• searchDisplayController :搜索顯示控制器
• splitViewController :分割視圖控制器
• modalViewController :模式控制器
• navigationController :導航控制器
• tabBarController :標簽控制器
4. 主要方法
• – loadView:不要主動調用該方法,當訪問控制器view的時候,就會調用該方法。如果要自己創建view,則需要重寫該方法。
• – viewDidLoad:當加載控制器的視圖到內存時,該方法被調用。
• – viewWillAppear:
• – viewDidAppear:
• – viewWillDisappear:
• – viewDidDisappear:
• – shouldAutorotateToInterfaceOrientation:是否支持指定的界面方向。
• –willAnimateRotationToInterfaceOrientation: duration:將要使用動畫過渡到某個界面方向。
• – didReceiveMemoryWarning:接收到內存警告信息。
• – presentModalViewController:animated:顯示模式控制器
• – dismissModalViewControllerAnimated:隱藏模式控制器
• – setToolbarItems:animated:設置工具欄子項
• – setEditing:animated:設置編輯狀態
5. 設計模式
傳統的mvc設計模式

iOS mvc設計模式

主要區別在於view和model之間的數據交換都要通過控制器來協調,view和model之間不直接進行數據交換。
6. 控制器加載視圖過程

當調用視圖控制器的view屬性時,視圖控制器會先調用loadView方法加載視圖,因此,可以在loadView方法中創建所有的視圖,這是比較好的編程慣例。接着會調用視圖的viewLoad->viewWillAppear->viewDidAppear.
6. 控制器視圖消失過程
消失過程比較簡單,不作說明。
7. 事件處理

如圖所示,一般情況下,當一個視圖不響應用戶事件時,它會將事件傳遞給它的父視圖。但是,當視圖被視圖控制器管理時,它會將事件首先傳遞給視圖控制器。如果視圖控制器也不處理該事件,則視圖控制器會將數據傳遞給視圖控制器視圖的超類,一般是UIWindow.
