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

相关文章
相关标签/搜索