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 App...

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

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

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

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

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

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

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

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

onNewIntent调用时机

大家都知道oncreate(),onStart(),onResume()但是有很多人并不知道onNewIntent();这篇文章就为大家解开了隐藏在其中的秘密

详谈Activity生命周期函数调用时机

再谈Activity生命周期(详细)@(Android基础)[Android全程实录读书笔记]Activity的3中状态: 激活: 完全显示在界面上, 并且有焦点, 即正在与用户交互 暂停: 不完全显...

activity中onSaveInstanceState方法调用时机详解

onSaveInstanceState什么时候调用?onSaveInstanceState()的调用时机: 在activity的一个生命周期中,onSaveInstanceState()并非一定调用...
  • Rflyee
  • Rflyee
  • 2016-03-21 20:31
  • 2709

zz:虚函数绑定与调用时机分析

zz: http://bbs.chinaunix.net/archiver/tid-1711337.html 理解虚函数( virtual function )的几个关键点: 1.       理解...

onNewIntent调用时机

   在IntentActivity中重写下列方法:onCreate onStart onRestart  onResume  onPause onStop onDes...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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