通过 UIStoryboard 对象,就能加载 storyboard 文件。
注意:必须要有 storyboard,创建 UIStoryboard 对象才有意义,alloc init 创建 UIStoryboard 对象没有意义。
两个方法的解析:
(1)instantiateInitialViewController:默认加载箭头指向的控制器;
(2)instantiateViewControllerWithIdentifier:根据标识在storyboard 查找控制器,并且创建。
注意:标识不能乱传,会报错的,必须 storyboard 有这个标识才行。
下图演示模仿系统加载 main.storyboard 的具体步骤:
首先将默认的 Main Interface 置为空。
由此便模仿了系统对 main.storyboard 的默认加载。
下面讲解一下 loadView 方法的相关知识。
loadView 方法在控制器的 view 为 nil 的时候被调用。此方法用于以编程的方式创建 view 的时候用到。loadView 是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用写代码来实现控件。用于使用代码生成控件的函数。
1. loadView 作用:一般用来创建自定义的view;
2. loadView 什么时候调用:当控制器的 view 没有创建的时候,就会调用 loadView 去创建控制器的 view;
3. loadView 使用注意:如果重写 loadView 里面没有创建控制器的view,就不能使用 self.view,会造成死循环。
- (void)loadView
{
self.view.backgroundColor = [UIColor redColor];
// 此处会产生死循环
// 原因:self.view 没有获取到控制器的 view,就会调用 loadView 创建控制器的 view,相互调用导致死循环.
}
loadView 底层实现
判断下有没有指定 storyboard,如果有,就会帮你创建 storyboard 描述的控制器的view,如果没有,创建一个空的 view。