ios开发之控制器View的多种创建 -- 详解
2015-08-20 08:42
513 查看
昨天我写了那个控制器的多种创建方式,今天我也就趁热打铁,把控制器View的多种创建方式也说一下吧, 详情分析一下控制器的View的加载过程。
1. 通过xib加载
通过xib也有很多加载方式的,我先说说最简单,明确的加载方式,为了方便阅读和理解,我还是配上截图来解释。
* 直接通过xib的完整名称
> 首先先创建一个自定义的控制器(OneViewController)注意:我这里的控制器名称,即下面xib的名称
> 接着就创建一个xib
> 设置TextView的各个属性来与待会的其他view加以区分,然后配置TextView 的File's Owner的class 以及他的view连线 使之可以被控制器加载view
然后在相应的位置填写代码, 如下图
然后运行就完成指定xib的创建了, 效果如下
* 现在我们再另外创建两个新的xib 注意其名称(OneView,OneViewController )和我们控制器的名称(OneViewController)
* 创建完 也要和上一个样设置自己的属性 和File's Owner的class 为我们的控制器(OneViewController) 以及连接View
》
> 接下来我们来修改我们刚才的代码 把
initWithNibName:@"TextView" bundle:nil 改为 init
然后运行, 结果如下
上图加载的这个view 就是我们的OneView.xib的view
现在我们把OneView.xib的文件删了, 然后清除一下程序(command + shift +K)然后再次运行程序(command + R)
结果如下
上图的view就是我们OneViewController.xib的view
跟上面一样,现在我们把OneViewController.xib的文件删了,
然后清除一下程序(command + shift +K)然后再次运行程序(command + R)结果如下
上面是系统自己创建了应该“空白”的view, “空白”就是什么也没有, 之所以是黑色是因为我们的window的背景颜色为黑,
现在我们设置我们控制器的view为红色来证明它被创建了,然后运行
效果如下
现在我们来重写控制器的 - (void)loadView;方法
然后运行, 效果如下, 说明系统可以通过-(void)loadView这个方法来创建view的
好了, 演示到现在,我就总结一下控制器view的具体加载顺序
首先系统调用控制器的loadView方法去创建,如果没有就会去调用storyBodard; 切记(这里的stroryBoard)如果是本来就有的,就只能用于系统自己创建的viewController控制器, 本次例子都是在自定义的控制器(OneViewController)下创建的View, 因为我们并没有创建自定义的storyboard文件,所以就会自己查找并加载xib的文件,如我们在代码指定了xib的文件名称,就会根据nibName对应的xib的描述去创建,
如果我们的代码是用init实力化对象的话, 系统会先根据自定义控制器(OneViewController)的名称去掉Controller的名称的xib(OneView.xib),根据OneView.xib的描述去创建, 如没有该文件,就会查找与自定义控制器名称一样的xib文件(OneViewController.xib),然后根据OneViewController.xib的描述去创建。 如果还是没有该文件的话,系统就会自己创建一个空白的View。
请注意:我上面的文字描述是根据我自己的实例描述的, 我自定义的控制器名称为OneViewConteroller, 而下面的辅助图中是控制器HMViewController的view的创建, 原理都是一样的
HMViewController的view的创建
如果需要源代码的可以到下面的百度云链接下载:
链接: http://pan.baidu.com/s/1pJmoAKF 密码: sng2
感谢你们的阅读! 希望我们共同努力, 共同进步!
你们的评论是对我的最大支持!!
1. 通过xib加载
通过xib也有很多加载方式的,我先说说最简单,明确的加载方式,为了方便阅读和理解,我还是配上截图来解释。
* 直接通过xib的完整名称
> 首先先创建一个自定义的控制器(OneViewController)注意:我这里的控制器名称,即下面xib的名称
> 接着就创建一个xib
> 设置TextView的各个属性来与待会的其他view加以区分,然后配置TextView 的File's Owner的class 以及他的view连线 使之可以被控制器加载view
然后在相应的位置填写代码, 如下图
然后运行就完成指定xib的创建了, 效果如下
* 现在我们再另外创建两个新的xib 注意其名称(OneView,OneViewController )和我们控制器的名称(OneViewController)
* 创建完 也要和上一个样设置自己的属性 和File's Owner的class 为我们的控制器(OneViewController) 以及连接View
》
> 接下来我们来修改我们刚才的代码 把
initWithNibName:@"TextView" bundle:nil 改为 init
然后运行, 结果如下
上图加载的这个view 就是我们的OneView.xib的view
现在我们把OneView.xib的文件删了, 然后清除一下程序(command + shift +K)然后再次运行程序(command + R)
结果如下
上图的view就是我们OneViewController.xib的view
跟上面一样,现在我们把OneViewController.xib的文件删了,
然后清除一下程序(command + shift +K)然后再次运行程序(command + R)结果如下
上面是系统自己创建了应该“空白”的view, “空白”就是什么也没有, 之所以是黑色是因为我们的window的背景颜色为黑,
现在我们设置我们控制器的view为红色来证明它被创建了,然后运行
效果如下
现在我们来重写控制器的 - (void)loadView;方法
然后运行, 效果如下, 说明系统可以通过-(void)loadView这个方法来创建view的
好了, 演示到现在,我就总结一下控制器view的具体加载顺序
首先系统调用控制器的loadView方法去创建,如果没有就会去调用storyBodard; 切记(这里的stroryBoard)如果是本来就有的,就只能用于系统自己创建的viewController控制器, 本次例子都是在自定义的控制器(OneViewController)下创建的View, 因为我们并没有创建自定义的storyboard文件,所以就会自己查找并加载xib的文件,如我们在代码指定了xib的文件名称,就会根据nibName对应的xib的描述去创建,
如果我们的代码是用init实力化对象的话, 系统会先根据自定义控制器(OneViewController)的名称去掉Controller的名称的xib(OneView.xib),根据OneView.xib的描述去创建, 如没有该文件,就会查找与自定义控制器名称一样的xib文件(OneViewController.xib),然后根据OneViewController.xib的描述去创建。 如果还是没有该文件的话,系统就会自己创建一个空白的View。
请注意:我上面的文字描述是根据我自己的实例描述的, 我自定义的控制器名称为OneViewConteroller, 而下面的辅助图中是控制器HMViewController的view的创建, 原理都是一样的
HMViewController的view的创建
如果需要源代码的可以到下面的百度云链接下载:
链接: http://pan.baidu.com/s/1pJmoAKF 密码: sng2
感谢你们的阅读! 希望我们共同努力, 共同进步!
你们的评论是对我的最大支持!!
相关文章推荐
- iOS中 @synthesize 和 @dynamic 区别
- iOS的电话号码344格式以及判断电话号码的正则表达式
- iOS Cell异步图片加载优化,缓存机制详解。
- OC_调用系统短信_邮件_电话
- 苹果开发者账号区别
- IOS动态类型isKindOfClass, isMemberOfClass
- iOS调试技巧
- 关于block的基本用法
- 创建自定义TextFile搜索框
- iOS动态彩条
- 神奇的IB_DESIGNABLE和IBInspectable
- 苹果开发 笔记(63)Masonry
- iOS项目开发实战——多个视图的平移动画与闭包函数的声明与调用
- iOS storyboard中四种好用的界面切换
- wxhl ios bj 49期 张浩 学习心得体会文章连载 第六章
- 常用iOS URL Scheme附录
- IOSButton自定义
- IOS类和对象的概念
- TI-RTOS Sys-Bios操作系统:task栈溢出检测方法
- iOS之缓存数据