學習筆記:iOS 視圖控制器(UIViewController)剖析


視圖控制器在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設計模式

   Traditional version of MVC as a compound pattern

   iOS mvc設計模式

  Cocoa version of MVC as compound design pattern

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

 

6.  控制器加載視圖過程

 

 當調用視圖控制器的view屬性時,視圖控制器會先調用loadView方法加載視圖,因此,可以在loadView方法中創建所有的視圖,這是比較好的編程慣例。接着會調用視圖的viewLoad->viewWillAppear->viewDidAppear.

6.  控制器視圖消失過程

    消失過程比較簡單,不作說明。

 

7. 事件處理

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM