控制器View是如何创建的?

对于很多程序员来说控制器和View的关系肯定有点模糊,对于View的创建肯定有一种说不清道不明的感觉。view只是控制器的一个属性,控制器中有许多对view处理的方法,也就是说得控制器管理view的业务。
通常有三种方式通过控制器来产生view:
<1>. 纯代码
<2>.通过storyboard方式加载控制器中的view
<3>.通过xib方式加载控制器中的view
通过下图通过YBViewContoller控制器view的产生可以明了的了解view的产生方式:
这里写图片描述
在这里我们应该明了不管xib或者storyboard创建控制器,我们必须对此绑定一个类(在这里以绑定YBViewContoller控制器为例简要说明 )
无论控制器是如何创建的,控制器肯定属于一个类(在这里YBViewContoller控制器),类里面的loadView就能判断view以哪种方式加载view
首先将三种创建控制器的方法代码写出来:

    // 1.纯代码
    YBViewController *viewCtr = [[YBViewController alloc] init];
    // 2.storyboard
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YBViewController" bundle:nil];
    YBViewController *storyCtr = [storyboard instantiateInitialViewController];
    // 3.xib
    YBViewController *xibCtr = [[YBViewController alloc] initWithNibName:@"YBViewController" bundle:nil];
    self.window.rootViewController = xibCtr;

我们就仔细梳理一番,通过三种方式只是创建YBViewController控制器,如何加载出view,就是loadView方法的事情了,如果在这个类中重写的 loadView方法自定义View的话,这个控制器加载的view就是自定的view,与加载控制器的方法无关,如果没有重写loadView的方法是怎样加载控制器的view?在控制器中有两个属性:
@property(nullable, nonatomic, readonly, copy) NSString *nibName; @property(nullable, nonatomic, readonly, strong) UIStoryboard *storyboard
当我们想用storyboard加载控制器时,传入storyboard的名字赋值给UIStoryboard属性,加载view时就会加载这个storyboard中控制器的view,同理通过xib加载时的道理也是一样的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值