就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即可。