UIViewController

就iOS开发来说,UIViewController就最核心的类型之一。而iOS的整个UI开发的核心思想也是MVC的架构,从UIViewController的命名就可以看出它在MVC中所扮演的角色,那就是Controller

Controller作为整个UI视图的控制器,对于用户的输入做出逻辑处理,例如用户点击某个按钮应该执行什么操作等;View角色只负责显示视图,view的这部分就是我们在nib或者storyboard设计的UI了。Model也就是我们的数据模型,例如从Core data中加载的实体类等等。这整个架构分工清晰,降低了代码的耦合度。今天我们要学习的角色就是Controller。

UIViewController有两种加载方式,第一种是通过手动加载xib文件来加载视图,第二种是直接通过代码来创建View Controller中的师徒来加载。直接看示例吧。

方式一 :xib加载

在创建一个xib文件,将File's Owner设置为对应的UIViewController类型,然后关联File's Owner的view与xib中的root view(在创建UIViewController时自动创建了xib的话不需要这一步,只有分开创建时才需要手动建立关联,否则会报错。),然后通过如下代码即可创建:

 
1
2
3
4
5
//    MainViewController *vc=[[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];  
//    self.window.rootViewController = vc;  
        
    MainViewController *vc=[[MainViewController alloc] init];  
    self.window.rootViewController = vc;

方式二:代码添加View

思路就是将View添加到UIViewController的root view中,在UIViewController启动时默认会从与其关联的xib或者storyboard中加载视图,如果没有找到则root view为nil。我们可以覆写loadView方法,通过代码的形式向里面添加view。代码如下 :

 
1
 
 
1
2
3
4
5
6
7
8
9
10
// 加载视图时绘制
-(void) loadView
{
  
    UILabel* label = [[UILabel alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] ;
    label.text = @"Draw The Text";
    label.backgroundColor = [UIColor redColor] ;
      
    self.view = label;
}

然后直接通过alloc和init创建UIVIewController即可。

原文地址:https://www.cnblogs.com/dingfuyan/p/5209957.html