一、控制器的多种创建方式
如何创建一个控制器 注意:加载UIStoryboard仅仅是加载名称叫做Test的storyboard,并不会创建storyboard中的控制器以及控件通过xib创建
注意:要想让xib里的view设置为所创建控制器的view,必须设置xib的File's owner为所创建控制器。并且File's owner点右键将view连到xib里的view上。 storyboard默认已经完成了上述操作二、控制器view的创建方式
1.没有同名xib情况下创建2.通过storyboard创建3.有指定xib情况下创建4. 有同名xib情况下创建5.有同名去掉controll的情况下创建6.重写控制器的loadView方法//第一种方式:没有xib和storyboard情况下创建
(通过alloc init创建控制器,会自动创建一个空白的view作为控制器的view)//第二种方式:通过storyboard创建
如果通过storyboard创建,会根据storyboard中箭头指向的控制器view所描述的 样子创建控制器的view//第三种方式:有指定xib的情况下创建(调用initWithNib:方法创建控制器)
如果通过xib创建,会根据xib中控制器view所描述的样子创建控制器的view //第四种方式:有与控制器同名xib的情况下创建(直接调用init方法创建控制器)如果有同名xib,会自动找到同名xib中描述的view作为控制器的view//第五种方式:有与控制器同名(但不含controller)xib的情况下创建(直接调用
init方法创建控制器)如果有与控制器同名(但不含controller)的xib,会自动找到该xib的view作为控 制器的view//第六种方式:重写控制器的loadView方法(该方法一般用于自定义控制器view)
什么时候调用LoadView就代表什么时候加载控制器的view如果重写了控制器的loadView方法,就不会去加载创建同名去掉controller的xib 和同名的xib了,而是创建一个空白的view(什么都不写的话)作为控制器的view, 也可以在loadView中直接创建view
三、控制器view的延迟加载(懒加载)
*控制器的view是延迟加载的:用到时再加载*可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载*控制器的view加载完毕就会调用viewDidLoad