1.2 控制器 view 的建立和載入,1.2view

來源:互聯網
上載者:User

1.2 控制器 view 的建立和載入,1.2view

載入優先順序:
  • 1、用系統的loadView方法建立控制器的視圖
  • 2、如果指定載入某個storyboard檔案做控制器的視圖,就會載入storyboard裡面的描述去建立view
  • 3、如果指定讀取某個xib檔案做控制器的視圖,就根據指定的xib檔案去載入建立
  • 4、如果有xib檔案名稱和控制器的類名首碼(也就是去掉controller)的名字一樣的 xib檔案,就會用這個xib檔案來建立控制項器的視圖 【例:控制項器的名為 TDViewController, xib檔案名稱為 TDView.xib】
  • 5、找和控制器同名的xib檔案去建立
  • 6、如果以上都沒有就建立一個空的控制項器的視圖;
    控制器view的消極式載入:
  • 控制器的view是消極式載入(懶載入)的:用到時再載入
  • 控制器的view載入完畢(先載入loadView),再去 調用viewDidLoad方法
  • 用isViewLoaded方法判斷UIViewController的view是否已經被載入

 

圖解:

 

 

 

 

代碼驗證:

 1 #import "AppDelegate.h" 2 #import "TDViewController.h" 3  4 @interface AppDelegate () 5 @end 6  7 @implementation AppDelegate 8  9 - (BOOL)application:(UIApplication *)application10     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {11 12   // 建立window13   self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];14 15   // 1.沒有同名xib情況下(不用sb 和 xib) alloc init16   // 結論:透明的view17   TDViewController *vc = [[TDViewController alloc] init];18 19   // 2.通過 storyboard 建立20   // 結論:View預設是白色(因為sb拖控制器的時候 就是白色),和指定sb的描述是一致的21   UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Test" bundle:nil];22   TDViewController *vc = [sb instantiateInitialViewController];23 24   // 3.有指定xib情況下建立25   // 結論:view和指定xib的描述是一致的26   TDViewController *vc =27       [[TDViewController alloc] initWithNibName:@"TD" bundle:nil];28 29   // 4.有同名xib情況30   // 結論:如果有同名的話,會有優先載入同名的 xib, 因此不需要 initWithNibName31       TDViewController* vc = [[TDViewController alloc] init];32 33   // 5.有同名去掉controller的情況34   // 結論:如果有同名去掉controller的情況,優先順序 會比 同名高35   TDViewController *vc = [[TDViewController alloc] init];36 37   self.window.rootViewController = vc;// 設定跟控制器38   [self.window makeKeyAndVisible];// 顯示39 40   return YES;41 }
 1 #import "TDViewController.h" 2  3 @interface TDViewController () 4 @end 5  6 @implementation TDViewController 7  8 - (void)viewDidLoad { 9   [super viewDidLoad];10 }11 12 - (void)didReceiveMemoryWarning {13   [super didReceiveMemoryWarning];14 }15 16 // 6.loadView 此方法用來重寫vc的view17 // 結論:比其他(xib sb 代碼)的優先順序都要高18 - (void)loadView {19   self.view = [[UIView alloc] init];20   self.view.backgroundColor = [UIColor purpleColor];21   NSLog(@"loadView");22 }23 24 @end

 

 

控制器view的載入

 

loadView方法僅在用代碼建立視圖控制器的介面時使用在loadView方法中根據實際需求來確定到底是否需要調用[super loadView]  

 

 

 

Screen & Window & View Controller的關係      記憶體警告處理       如果你覺得本篇文章對你有所協助,請點擊右下部“推薦”,^_^   作者:藍田(Loto)
出處:http://www.cnblogs.com/shorfng/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連。   如有疑問,請發送郵件至 shorfng@126.com 聯絡我。   By:藍田(Loto)      

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.