iOS开发之控制器View的创建
2015-11-27 08:54
399 查看
首先我们来看一下以下情况window上会加载什么样的控制器view。
1> 根据之前讲到的,先创建一个和控制器(HXViewController)同名的xib文件(文件中view灰色),并加载初始化该控制器,使它成为window的根控制器。(设置File’s Owner控制器,拖线指定view)
代码:
显示的效果:灰色
2> 在1>的基础上,如果我只在HXViewController中实现loadView方法,其他的地方都没有改动过,则显示效果为白色,即没有创建1>中xib控制器view
显示效果:白色
3> 将1>中xib删除,再向项目中添加一个xib文件(名为:HXView,设置File’s Owner控制器,拖线指定view黄色),再将代码
4> 在3>的基础上,如果再将控制器中的loadView方法打开。则运行效果显示同2>相同,即没有加载3>中xib控制器view。
显示效果:白色
总结:当指定加载某个xib文件中控制器的时候,程序才会去加载那个xib中的控制器view;如果没有指定某个xib文件(即:nibName为nil时)就会去加载View.xib中的控制器view(如果有的话);如果没有View.xib,系统会返回一个nil的view加载到window上。如果控制器实现了loadView方法,则系统直接返回该方法中的view,不会再去加载xib/storyboard中的控制器view了。
控制器view加载的具体流程如下:(引用文档中的图片)
我觉得mj老师的流程图更详细点:(现引用李老师的图)
总结:
1、控制器的view是延迟加载的:用到的时候才会去加载。
2、可以通过isViewLoaded方法来判断一个控制器的view是否已经完成了加载。
3、控制器view加载完毕之后,才会调用viewdidLoad方法。(该方法在view加载完毕后,只会被调用一次,所有我们会将创建view的子控件方法放在该方法中执行)
1> 根据之前讲到的,先创建一个和控制器(HXViewController)同名的xib文件(文件中view灰色),并加载初始化该控制器,使它成为window的根控制器。(设置File’s Owner控制器,拖线指定view)
代码:
HXViewController *vc = [[HXViewController alloc] initWithNibName:@"HXViewController" bundle:nil]; self.window.rootViewController= vc;
显示的效果:灰色
2> 在1>的基础上,如果我只在HXViewController中实现loadView方法,其他的地方都没有改动过,则显示效果为白色,即没有创建1>中xib控制器view
显示效果:白色
3> 将1>中xib删除,再向项目中添加一个xib文件(名为:HXView,设置File’s Owner控制器,拖线指定view黄色),再将代码
HXViewController *vc = [[HXViewController alloc] initWithNibName:@"HXViewController" bundle:nil];改为
HXViewController *vc = [[HXViewController alloc] initWithNibName:nil bundle:nil];或
HXViewController *vc = [[HXViewController alloc] init];显示的效果:黄色
4> 在3>的基础上,如果再将控制器中的loadView方法打开。则运行效果显示同2>相同,即没有加载3>中xib控制器view。
显示效果:白色
总结:当指定加载某个xib文件中控制器的时候,程序才会去加载那个xib中的控制器view;如果没有指定某个xib文件(即:nibName为nil时)就会去加载View.xib中的控制器view(如果有的话);如果没有View.xib,系统会返回一个nil的view加载到window上。如果控制器实现了loadView方法,则系统直接返回该方法中的view,不会再去加载xib/storyboard中的控制器view了。
控制器view加载的具体流程如下:(引用文档中的图片)
我觉得mj老师的流程图更详细点:(现引用李老师的图)
总结:
1、控制器的view是延迟加载的:用到的时候才会去加载。
2、可以通过isViewLoaded方法来判断一个控制器的view是否已经完成了加载。
3、控制器view加载完毕之后,才会调用viewdidLoad方法。(该方法在view加载完毕后,只会被调用一次,所有我们会将创建view的子控件方法放在该方法中执行)
相关文章推荐
- iOS开发教程:Storyboard全解析
- iOS学习之Table View的简单使用
- IOS 中frame与bounds的区别
- iOS案例:读取指定txt文件,并把文件中的内容输出出来
- iOS案例:读取指定目录下的文件列表
- mrc和arc混编的配置
- 在蜂窝教育iOS培训 增强就业技能提升竞争力
- iOS检测以及提示系统更新
- iOS 利用AVPlayer创建视频播放器
- [ios]AVPlayer 缓冲、 暂停通知和海报帧
- IOS之KVC和KVO(未完待续)
- iOS开发,EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具
- iOS音频流播放、后台播放、远程控制、锁屏封面等总结
- ios即时通讯客户端开发之-mac上搭建openfire服务器
- IOS图层Layer学习笔记(五)—— CATextLayer
- iOS 步进控件
- iOS 汉字下加下划线
- ios 设计模式备忘录(1)
- IOS退出后台,通话继续,声音继续(注意IOS无后台运行)
- iOS 界面传值 单例模式