IOS 之 通过 storyboard 自定义控制器以及 loadView 方法简述
2016-12-13 17:02
316 查看
通过 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,会造成死循环。
loadView 底层实现
判断下有没有指定 storyboard,如果有,就会帮你创建 storyboard 描述的控制器的view,如果没有,创建一个空的 view。
注意:必须要有 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。
相关文章推荐
- ios-day11-02(控制器的多种创建方式。init方法创建、通过storyboard的创建、通过xib创建)
- iOS_17_控制器切换_TabBarController_通过storyboard方式
- 【iOS开发-113】在storyboard上用AutoLayout,纯代码实现AutoLayout布局方法以及简单动画
- iOS开发中CAlayer层的属性以及自定义层的方法
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
- iOS自定义导航控制器侧滑返回的多种实现方法
- iOS彩票项目--第五天,新特性引导页的封装、返回按钮的自定义、导航控制器的滑动返回以及自定义滑动返回功能
- 【iOS开发-30】UITabBarController的几种代理方法以及结合NSUserDefaults还原上次退出时被选中视图控制器和视图控制器的顺序
- iOS开发UI高级—06使用storyboard创建导航控制器以及控制器的生命周期
- iOS UI-(多)视图控制器的生命周期、加载方法和模态视图方法以及屌丝方法
- iOS开发UITabBarController的几种代理方法以及结合NSUserDefaults还原上次退出时被选中视图控制器和视图控制器的顺序
- ios如何通过storyboard获得视图控制器
- 详解iOS开发中使用storyboard创建导航控制器的方法
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
- 【iOS开发-111】自定义大头针Annotation以及2种导航划线的方法介绍
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
- 【iOS开发-113】在storyboard上用AutoLayout,纯代码实现AutoLayout布局方法以及简单动画
- ios 不通过import 调用其他控制器的方法
- [iOS]通过xib自定义cell的时候在awakeFromNib方法里面修改view的frame无效
- iOS自定义导航控制器侧滑返回的多种实现方法