iOS開發UI篇—控制器的View的建立

來源:互聯網
上載者:User

標籤:

iOS開發UI篇—控制器的View的建立

一、6種建立控制器View的方式

#import "NJAppDelegate.h"#import "NJViewController.h"/* 1.沒有同名xib情況下 2.通過 storyboard 建立 3.有指定xib情況下建立 4.有同名xib情況 5.有同名去掉controll的情況 6.loadveiw */@implementation NJAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // 建立UIWindow    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    self.window.backgroundColor = [UIColor whiteColor];        /*     // 1.第一種方式:沒有xib和storyboard     // (如果沒有xib和storyboard, 會自動建立一個空白的view做為控制器的veiw)     NJViewController *vc = [[NJViewController alloc] init];     */        /*     //2.通過 storyboard 建立     // 如果通過storyboard建立, 會建立箭頭指向view做為控制器的veiw          // 如果重寫了控制器的loadview方法, 就不會建立storyboard中描述的view作為控制器的view, 而是建立一個空白的veiw做為控制器的veiw     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];     NJViewController *vc = [storyboard instantiateInitialViewController];     */        /*     // 3.有指定xib情況下建立     // 如果通過xib, 會建立xib中描述的veiw做為控制器的veiw     NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];     */        /*     //  4.有同名xib情況     // 如果有同名的xib, 會自動找到同名xib中描述的view做為控制器的veiw     NJViewController *vc = [[NJViewController alloc] init];     */        /*     // 5.有同名去掉Controller的 xib情況     // 如果有有同名去掉Controller的xib, 會自動找到該xib的view做為控制器的view     NJViewController *vc = [[NJViewController alloc] init];     */        // 6.重寫控制器的loadveiw方法    // 如果重寫了控制器的loadview方法, 就不會去載入建立同名去掉controller的xib和同名的xib, 而是建立一個空白的veiw做為控制器的veiw    NJViewController *vc = [[NJViewController alloc] init];        // 設定控制器為window的根控制器    self.window.rootViewController = vc;    // 顯示window    [self.window makeKeyAndVisible];        return YES;}

六種方式:

1.沒有同名xib情況下
2.通過 storyboard 建立
3.有指定xib情況下建立
4.有同名xib情況
5.有同名去掉controll的情況
6.loadveiw

二、建立控制器View的優先順序

蘋果官方文檔:

 

三、控制器View的消極式載入

說明:

控制器的view是消極式載入的:用到時再載入

可以用isViewLoaded方法判斷一個UIViewController的view是否已經被載入

控制器的view載入完畢就會調用viewDidLoad方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // 1.建立UIWindow    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    self.window.backgroundColor = [UIColor whiteColor];            // 2.建立控制器     NJViewController *vc = [[NJViewController alloc] init];        // 其實是兩步操作, 首先調用loadview方法, 建立控制器的veiw,然後再設定控制器的view的顏色為紫色, 也就是說後一次的顏色覆蓋掉了前一次的顏色    vc.view.backgroundColor = [UIColor purpleColor];        // 3.設定控制器為window的根控制器    self.window.rootViewController = vc;        // 4.顯示window(在這一行才用到了控制器的veiw)    [self.window makeKeyAndVisible];        return YES;}

主控制器檔案中:

#import "NJViewController.h"@interface NJViewController ()@end@implementation NJViewController// 當控制器需要顯示控制器的view的時候就會調用loadView// 可以在loadView方法中建立view給控制器// 該方法一般用於自訂控制器的view- (void)loadView{    // 什麼時候調用loadveiw就代表什麼時候載入控制器的veiw    NSLog(@"loadView");        self.view = [[UIView alloc] init];    self.view.backgroundColor = [UIColor greenColor];}- (void)viewDidLoad{    [super viewDidLoad];    NSLog(@"viewDidLoad");}@end

 

iOS開發UI篇—控制器的View的建立

聯繫我們

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