iOS開發之自定義控制器的view

    當建立完控制器,須要加載控制器的view時,蘋果默認的作法是去加載storyboard的view,要自定義控制器的view,就須要重寫控制器的loadView方法,這個方法的做用就是自定義控制器view,若是重寫了這個方法,就不會去加載storyboard描述的控制器的View。
spa

    通常重寫某個方法時,咱們會先調用[super xxx]方法,好比當咱們重寫loadView方法時,會先調用[super loadView]方法,可是在控制器這裏的super是指的UIViewController,也就是說調用系統默認的作法,去加載storyboard的view,然而這並非咱們自定義view想要的,因此在這裏不能調用[super loadView],因此,一旦重寫loadView方法,就不要[super loadView]。須要注意的是,在laodView方法中,若是沒有自定義的view,那麼就沒法獲取控制器的view了,因此在這個方法中,不能使用self.view,不然會死循環。loadView方法何時調用?當第一次使用控制器view的時候調用。也就是調用view的getter方法時。code

- (UIView *)view{
    
    if (_view == nil) {
        [self loadView];
        [self viewDidLoad];
    }
    return _view;
}

這是一種自定義控制器view的方式。另一種就是使用xib。get

UIViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

只要經過initWithNibName:bundle:初始化控制器,而且nibName爲nil時,就會執行如下幾步:it

1.尋找有沒有跟控制器類名同名可是不帶Controller的xib,若是有就會去加載。(優先級最高)class

2.尋找有沒有跟控制器類名同名的xib,若是有就會去加載循環

3.若是都沒有找到,建立空的view。方法

xib描述了控制器的view以後,也是默認經過loadView方法去加載view的。view


控制器view懶加載:storyboard

控制器的view並非建立完控制器後去加載的,而是當第一次使用view時纔會去加載。
vi

相關文章
相關標籤/搜索