iOS學習筆記(六)——ViewController

來源:互聯網
上載者:User
         ViewController是iOS應用程式中重要的部分,是應用程式資料和視圖之間的重要橋樑,ViewController管理應用中的眾多視圖。iOS的SDK中提供很多原生ViewController,以支援標準的使用者介面,例如表視圖控制器(UITableViewController)、導航控制器(UINavigationController)、標籤欄控制器(UITabbarController)和iPad專有的UISplitViewController等。


        按結構可以對iOS的所有ViewController分成兩類:
        1、主要用於展示內容的ViewController,這種ViewController主要用於為使用者展示內容,並與使用者互動,如UITableViewController,UIViewController。
        2、用於控制和顯示其他ViewController的ViewController。這種ViewController一般都是一個ViewController的容器。如UINavigationController,UITabbarController。它們都有一個屬性:viewControllers。其中UINavigationController表示一種Stack式結構,push一個ViewController或pop一次,因此後一個ViewController一般會依賴前一個ViewController。而UITabbarController表示一個Array結構,各個ViewController是並列的。


ViewController使用

UIViewController可以使用兩種方式建立,1、xib方式,2、代碼方式

        1)xib方式

        Command+N 建立檔案,選Cocoa Touch UIViewController subclass,SubClass of UIViewController,勾選with XIB for user interface。定義ViewController名字是MainViewController,最終產生MainViewController.h MainViewController.m MainViewController.xib三個檔案。在AppDelegate.m檔案的

didFinishLaunchingWithOptions方法中載入xib檔案。

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application launch.    self.window.backgroundColor = [UIColor whiteColor];        MainUIViewController *vc=[[MainUIViewController alloc]initWithNibName:@"MainUIViewController" bundle:nil];    self.window.rootViewController=vc;        [self.window makeKeyAndVisible];    return YES;

        載入xib檔案後,在xib檔案拖拽幾個控制項可看到效果。

           2)代碼建立

       Command+N 建立檔案UIViewController檔案,在AppDelegate.m檔案的didFinishLaunchingWithOptions方法中使用。在UIViewController的loadView方法中使用代碼建立view。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application launch.    self.window.backgroundColor = [UIColor whiteColor];    //    MainUIViewController *vc=[[MainUIViewController alloc]initWithNibName:@"MainUIViewController" bundle:nil];//    self.window.rootViewController=vc;        RootViewController *rc=[[RootViewController alloc] init];    self.window.rootViewController=rc;        [self.window makeKeyAndVisible];    return YES;}

            建立View

- (void)loadView{    [super loadView];        UIView *view=[[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];    view.alpha=0.5;    view.backgroundColor=[UIColor cyanColor];    self.view=view;}

ViewController的生命週期

       前面寫了iOS應用程式的生命週期,這裡會寫到ViewController的生命週期,這個更像Android的Activity的生命週期(見文章最後的圖)。ViewController生命週期會經曆初始化、載入視圖、銷毀視圖、生命結束等過程。

1)init方法

      初始化ViewController本身。

2)loadView方法

      當view需要被展示而它卻是nil時,viewController會調用該方法。

      如果代碼維護View的話需要重寫此方法,使用xib維護View的話不用重寫。

      

3)viewDidLoad方法

      執行完loadView後繼續執行viewDidLoad,loadView時還沒有view,而viewDidLoad時view已經建立好了。

4)viewDidUnload方法

     當系統記憶體吃緊的時候會調用該方法,記憶體吃緊時,在iPhone OS 3.0之前didReceiveMemoryWarning是釋放無用記憶體的唯一方式,但是OS 3.0及以後viewDidUnload方法是更好的方式。

      在該方法中將所有IBOutlet(無論是property還是執行個體變數)置為nil(系統release view時已經將其release掉了)。

      在該方法中釋放其他與view有關的對象、其他在運行時建立(但非系統必須)的對象、在viewDidLoad中被建立的對象、快取資料等。

      一般認為viewDidUnload是viewDidLoad的鏡像,因為當view被重新請求時,viewDidLoad還會重新被執行。

5)dealloc

      釋放其他資源或記憶體。


viewController的生命週期圖

ViewController載入view過程,見(loadView)

1)loadView

ViewController卸載View過程見(unLoadView)

2)unLoadView

/**

* @author 張興業*  http://blog.csdn.net/xyz_lmn*  iOS入門群:83702688

*  android開發進階群:241395671

*  我的新浪微博:@張興業TBOW*/

參考:

https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457-CH1-SW1

http://xcodev.com/341.html

http://iostrack.com/post/2012-07-20/40029700941

Activity生命週期

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.