控制器的view的加载优先级

拿到控制器后,控制器的view是在什么时候按照什么优先级创建加载的?

1.控制器内部的view是延迟加载

1> 用到时再加载(loadView)

2> 加载完毕后会调用控制器的viewDidLoad方法

也就是说,控制器的view在第一次加载的时候会调用控制器的loadView 方法,需要自定义view的救灾该方法中完成;

如果没有实现loadView方法,那么就会看该控制器是不是通过storyboard创建的,如果是就加载对应storyboard中的view;

如果不是通过加载storyboard创建的,那么就会寻找跟该控制器名字相似的xib,

例如是abcViewController ,那么就先查找abcView.xib,

如果找不到就再找abcViewController.xib,找到就加载对应的view,

还找不到那么就自动创建个背景是黑色的view

注意,loadView方法类似于控制器view属性的get方法(说类似是因为只有在发现view为空的时候才相当于view的get方法),

所以该方法必须先给self.view赋值,不能进来直接就继续使用self.view.xxxx,否则会出现死循环

时间: 2024-12-15 01:33:27

控制器的view的加载优先级的相关文章

源码03-02-09-控制器View懒加载

// // AppDelegate.m // 09-控制器View懒加载 #import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictio

iOS之控制器View的加载

首先我们得知道,控制器view是通过懒加载的方式进行加载的,即用到的时候再加载.loadView有什么作用,它与viewDidLoad有何区别. loadView方法 当我们用到控制器view时,就会调用控制器view的get方法,在get方法内部,首先判断view是否已经创建,如果已存在,则直接返回存在的view,如果不存在,则调用控制器的loadView方法,在控制器没有被销毁的情况下,loadView也可能会被执行多次 viewDidLoad方法 当控制器的loadView方法执行完毕,v

控制器View的加载过程

1.控制器内部的view是延迟加载 1> 用到时再加载2> 加载完毕后会调用控制器的viewDidLoad方法 2.创建控制器的方式 1> 直接通过代码创建OneViewController *one = [[OneViewController alloc] init]; 如果调用init方法创建控制器(TwoViewController),那么在加载控制器view的时候: a.优先查找 “TwoView.xib” b.其次再查找 同名 的xib 文件 “TwoViewControlle

47.Android View的加载过程 (转)

原文地址:http://blog.csdn.net/xyz_lmn/article/details/20122303 大家都知道Android中加载view是从Activity的onCreate方法调用setContentView开始的,那么View的具体加载过程又是怎么的呢?这一节我们做一下分析. 首先追踪一下代码: Activity中: [java] view plain copy print? public void setContentView(int layoutResID) { ge

Android View的加载流程

什么是Activity? Activity是 用户操作的可视化界面:它为用户提供了一个放置视图和交互操作的窗口.采用setContentView的方法提供.因此,可以理解Activity.Window.View三者关系为.Activity提供Window ,View被添加到Window中. 以刷墙举例: Activity可以理解为房间,Window就是房间内的墙面, 我们在墙面上可以刷各种不同的图案,这些图案就是View. Activity View的加载流程 1.Activity在被创建之初,

iOS之深入了解控制器View的加载

在面试中,面试官可能会问这样的问题,loadView有什么作用,它与viewDidLoad有何区别 首先我们得知道,控制器view是通过懒加载的方式进行加载的,即用到的时候再加载. loadView方法 当我们用到控制器view时,就会调用控制器view的get方法,在get方法内部,首先判断view是否已经创建,如果已存在,则直接返回存在的view,如果不存在,则调用控制器的loadView方法,在控制器没有被销毁的情况下,loadView也可能会被执行多次 viewDidLoad方法 当控制

UIKit框架(6)控制器view的加载方式

本篇文章,总结控制器管理的view是如何创建而来的,以及Xcode对控制器view创建的隐含规则 创建方式 方式一:alloc+init方式,空白view 应当在控制器的viewDidLoad方法中添加要对view进行的各种操作 方式二:alloc+initWithNib方式,即view是由xib设计的 方式三:从UIStoryboard对象加载的,即view是由storyboard设计的 方式四:重写控制器的loadView方法,该方法内进行创建view 如: - (void)loadView

Fragment仿360应用市场,主界面布局,fragmentTabAdapter导致view无法加载

晚上在写一个主界面是一个FragmentActivity,底下是4个fragment分别作为四个Tabhost. 并且每个tab下面又加载5~6个滑动fragment,问题来了,fragmentTabAdapter调试了半天,复用的Fragment只能显示一次.我就郁闷. 后来查看了,必须用this.getChildFragmentManager()将FragmentManager传递给fragmentTabAdapter,方能解决这个问题.

TP框架自动加载优先级

$map = array('Think\Log'=>THINK_PATH.'Think\Log.php','Org\Util\Array'=>THINK_PATH.'Org\Util\Array.php'); Think\Think::addMap($map); 以Test\MyClass类为例,自动加载的优先顺序如下: 1.在alias.php中或者addMap方法中判断是否注册了 Test\MyClass类映射,如果有则自动加载类库映射定义的文件: 2.判断是否存在Library/Test