iOS开发之控制器View的创建

首先我们来看一下以下情况window上会加载什么样的控制器view。

1>  根据之前讲到的,先创建一个和控制器(HXViewController)同名的xib文件(文件中view灰色),并加载初始化该控制器,使它成为window的根控制器。(设置File’s Owner控制器,拖线指定view)

代码:

HXViewController *vc = [[HXViewController alloc] initWithNibName:@"HXViewController" bundle:nil];
self.window.rootViewController= vc;

显示的效果:灰色

2>  在1>的基础上,如果我只在HXViewController中实现loadView方法,其他的地方都没有改动过,则显示效果为白色,即没有创建1>中xib控制器view

显示效果:白色


3>  将1>中xib删除,再向项目中添加一个xib文件(名为:HXView,设置File’s Owner控制器,拖线指定view黄色),再将代码

HXViewController *vc = [[HXViewController alloc] initWithNibName:@"HXViewController" bundle:nil];
改为

HXViewController *vc = [[HXViewController alloc] initWithNibName:nil bundle:nil];

HXViewController *vc = [[HXViewController alloc] init];
显示的效果:黄色


4>  在3>的基础上,如果再将控制器中的loadView方法打开。则运行效果显示同2>相同,即没有加载3>中xib控制器view。

显示效果:白色

总结:当指定加载某个xib文件中控制器的时候,程序才会去加载那个xib中的控制器view;如果没有指定某个xib文件(即:nibNamenil时)就会去加载View.xib中的控制器view(如果有的话);如果没有View.xib,系统会返回一个nilview加载到window上。如果控制器实现了loadView方法,则系统直接返回该方法中的view,不会再去加载xib/storyboard中的控制器view了。

控制器view加载的具体流程如下:(引用文档中的图片)


我觉得mj老师的流程图更详细点:(现引用李老师的图)

总结:

1、控制器的view是延迟加载的:用到的时候才会去加载。

2、可以通过isViewLoaded方法来判断一个控制器的view是否已经完成了加载。

3、控制器view加载完毕之后,才会调用viewdidLoad方法。(该方法在view加载完毕后,只会被调用一次,所有我们会将创建view的子控件方法放在该方法中执行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值