控制器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载入时的道理也是一样的。

原文地址:https://www.cnblogs.com/yxysuanfa/p/7239241.html