使用视图控制器的步骤:
1、创建一个根视图控制器 aController
2、在AppDelegate中引用aController的头文件,并且指定AppDelegate的根视图控制器为aController,代码如图:
![](https://i-blog.csdnimg.cn/blog_migrate/f7648460481748e06875251c2ad7ffa3.png)
3、设置了AppDelegate的根视图控制器,但是aController视图控制器的默认视图是空白视图,并且背景色是透明色,所以如果想要显示内容,就有两种方法,一种是:直接在viewDidLoad方法中创建视图,并且添加到根视图上面(viewDidLoad是视图控制器自带的根视图加载完毕的方法)。第二种是:重写加载根视图的方法(loadView方法),我们通常在这个方法中指定我们想要的某个视图作为根视图,并且在视图控制器的生命周期,此方法只会走一次,在这个方法中,不能使用self.view的getter方法获取根视图。因为此视图正在加载,并没有真实存在
4、通常我们用第二种方法,因为第二种方法,分工更加的明确,视图只做呈现,控制器只做触发事件
5、用第二种方法的话,我们需要指定一个视图作为aController的根视图,所以创建一个视图作为TA的根视图
6、创建一个自定义视图作为TA的根视图就看第三篇的自定义视图,如创建bView
7、创建好视图之后,在loadView的方法重写中指定自己创建的视图为视图控制器的根视图,记得将其设置成为属性如:
![](https://i-blog.csdnimg.cn/blog_migrate/3566aee25b51ab76e6e04b7b7ca91e5b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f6e34c5ab67b1f5031b91b20631efb31.png)
8、可以在viewDidLoad中为视图中的控件添加事件
模态:页面之间的相互转换
页面之间的转换需要两个视图控制器:a,b
1、进入下一个界面b,为视图控制器中的视图中的button添加方法,在方法中先创建下一个界面的对象,在使用模态推出下一个页面,代码:
![](https://i-blog.csdnimg.cn/blog_migrate/c4547b4ebb6fd95de5d7b7a63c9767a4.png)
2、返回上一个界面,只需要在b控制器的视图上的按钮上的方法中写模态返回的一个代码就可以了,代码:
![](https://i-blog.csdnimg.cn/blog_migrate/09897c26976450274a56a8e7b1565add.png)
MVC概述:
![](https://i-blog.csdnimg.cn/blog_migrate/abe0a6dcfa5e0b0356c9e3e2a96126c7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2a71b5998f98dd651a82fee16a388103.png)
屏幕检测:
1、设置设备支持旋转的方向,倒屏不作处理,默认是横屏还有正屏都支持。
方法:在视图控制器中重写supportedInterfaceOrientations方法,返回值是一个枚举值如:
![](https://i-blog.csdnimg.cn/blog_migrate/f17ece23227f330aa905551da1f46a3d.png)
2、设备在转化方向时和后执行的方法,在视图控制器中重写viewWillTransitionToSize:withTransitionCoordinator:,如让屏幕在旋转的时候回收键盘,代码:
![](https://i-blog.csdnimg.cn/blog_migrate/957abb2fdca94d6f4ac62cbfc0a0a2bf.png)
3、视图的处理:如在方向会发生变化的视图中,重写layoutSubviews方法,根据设备的方向,重新布局,代码如:
![](https://i-blog.csdnimg.cn/blog_migrate/f1591197767404c34052de6ce18945af.png)
内存警告:
当一个程序的运行内存到达一个值的时候,会调用didReceiveMemoryWarning方法,判断根视图是否已经加载,并且没有显示,如果是的话,把根视图设置为nil,目的是再次进入时能够重新加载调用viewDidLoad函数