UIViewController 中的loadView 调用时机

原创 2016年05月31日 14:56:58

每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方法就会被调用。前提是 view 的UIViewController 不为空。
实际上,loadView方法就是用来负责创建UIViewController的view, 也就是我们可以用来自定义VC 的View
下面我们从系统调用加载xib自定义view三个方面来说明一下loadView的调用情景。

一、系统调用

如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性,大致如下

-(void)loadView {
    [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
}

二、加载xib

它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view

  • 如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件
-(void)loadView {
    [[LHViewController alloc] initWithNibName:@"LHViewController" bundle:nil];
}
  • 如果没有明显地传xib文件名,就会加载跟UIViewController同名的xib文件
-(void)loadView {
    // 加载MJViewController.xib 
    [[LHViewController alloc] init]; 
}

三、自定义view

当需要自定义view时,就要重写loadView方法,并且不需要调用[super loadView],因为若没有xib文件,[super loadView]默认会创建一个空白的UIView。我们既然要通过代码来自定义UIView,那么就没必要事先创建一个空白的UIView,以节省不必要的开销。正确的做法应该是这样:

- (void)loadView {  
     self.view = [[[UIWebView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];  
}

UIViewController的loadView需要了解和注意的问题

 UIViewController的loadView用UIViewController有一段时间了,才发现以前对loadView的理解完全不到位。假如我们用Xcode新建一个View-based Ap...
  • iosClub
  • iosClub
  • 2011年06月05日 02:25
  • 2197

iOS --- UIViewController中的loadView使用场景

使用loadView方法触发nib中UIView的加载

ViewController 的loadView、viewDidLoad、viewDidUnload分别是什么时候调用的,在自定义ViewCointroller时在这几个函数中应该做什么工作?

由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起 init方法 在init方法中实例化必要的对象(遵从LazyLoad思想) init方...

loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的调用时间及用法

1> loadView 无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。      手工创建视图时,loadView被调用时self.view还为nil。一...
  • jiisd
  • jiisd
  • 2015年07月04日 23:14
  • 1423

loadView, viewDidLoad, viewDidUnLoad,分别是在什么时候被调用的.

loadView 1.什么时候被调用? 每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方...
  • w_sx_
  • w_sx_
  • 2014年09月20日 13:12
  • 2160

viewDidLoad 和 loadView 的区别,并且viewDidLoad可能被调用两次(或者多次)

viewDidLoad 和 loadView 的区别,并且viewDidLoad可能被调用两次(或者多次)
  • w_x_p
  • w_x_p
  • 2016年09月10日 16:52
  • 1364

UIViewController中各方法调用顺序及功能详解

UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, viewWillAppear, viewDidAppear...

UIViewController中各方法调用顺序及功能详解(2)

转自:http://blog.csdn.net/dizzthxl/article/details/14170047 UIViewController中loadView, viewDi...

[转]UIViewController中各方法调用顺序及功能详

原帖地址:http://blog.samoay.me/post/view/11 UIViewController中loadView, viewDidLoad, viewWillUnl...

UIViewController中各方法调用顺序及功能详解(1)

- (void)awakeFromNib; 这个方法用的时候,outlet还没有连接起来,是view Controller刚从storyboard建的时候,没有完全建好,不过可能有一些事情要在这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIViewController 中的loadView 调用时机
举报原因:
原因补充:

(最多只允许输入30个字)