星空网 > 软件开发 > 操作系统

1.2 控制器 view 的创建和加载

加载优先顺序:
  • 1、用系统的loadView方法创建控制器的视图
  • 2、如果指定加载某个storyboard文件做控制器的视图,就会加载storyboard里面的描述去创建view
  • 3、如果指定读取某个xib文件做控制器的视图,就根据指定的xib文件去加载创建
  • 4、如果有xib文件名和控制器的类名前缀(也就是去掉controller)的名字一样的 xib文件,就会用这个xib文件来创建控件器的视图 【例:控件器的名为 TDViewController, xib文件名为 TDView.xib】
  • 5、找和控制器同名的xib文件去创建
  • 6、如果以上都没有就创建一个空的控件器的视图;
 
 
 
控制器view的延迟加载:
  • 控制器的view是延迟加载(懒加载)的:用到时再加载
  • 控制器的view加载完毕(先加载loadView),再去 调用viewDidLoad方法
  • 用isViewLoaded方法判断UIViewController的view是否已经被加载

 

图解:

 

1.2 控制器 view 的创建和加载images/loading.gif' data-original="http://images2015.cnblogs.com/blog/731328/201601/731328-20160121230241484-105293433.png" width="664" height="336" />

 

 

1.2 控制器 view 的创建和加载

 

代码验证:

 1 #import "AppDelegate.h" 2 #import "TDViewController.h" 3  4 @interface AppDelegate () 5 @end 6  7 @implementation AppDelegate 8  9 - (BOOL)application:(UIApplication *)application10   didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {11 12  // 创建window13  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];14 15  // 1.没有同名xib情况下(不用sb 和 xib) alloc init16  // 结论:透明的view17  TDViewController *vc = [[TDViewController alloc] init];18 19  // 2.通过 storyboard 创建20  // 结论:View默认是白色(因为sb拖控制器的时候 就是白色),和指定sb的描述是一致的21  UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Test" bundle:nil];22  TDViewController *vc = [sb instantiateInitialViewController];23 24  // 3.有指定xib情况下创建25  // 结论:view和指定xib的描述是一致的26  TDViewController *vc =27    [[TDViewController alloc] initWithNibName:@"TD" bundle:nil];28 29  // 4.有同名xib情况30  // 结论:如果有同名的话,会有优先加载同名的 xib, 因此不需要 initWithNibName31    TDViewController* vc = [[TDViewController alloc] init];32 33  // 5.有同名去掉controller的情况34  // 结论:如果有同名去掉controller的情况,优先级 会比 同名高35  TDViewController *vc = [[TDViewController alloc] init];36 37  self.window.rootViewController = vc;// 设置跟控制器38  [self.window makeKeyAndVisible];// 显示39 40  return YES;41 }

 1 #import "TDViewController.h" 2  3 @interface TDViewController () 4 @end 5  6 @implementation TDViewController 7  8 - (void)viewDidLoad { 9  [super viewDidLoad];10 }11 12 - (void)didReceiveMemoryWarning {13  [super didReceiveMemoryWarning];14 }15 16 // 6.loadView 此方法用来重写vc的view17 // 结论:比其他(xib sb 代码)的优先级都要高18 - (void)loadView {19  self.view = [[UIView alloc] init];20  self.view.backgroundColor = [UIColor purpleColor];21  NSLog(@"loadView");22 }23 24 @end

 

 

控制器view的加载

 

loadView方法仅在用代码创建视图控制器的界面时使用
在loadView方法中根据实际需求来确定到底是否需要调用[super loadView] 
 

 1.2 控制器 view 的创建和加载

 

 

Screen & Window & View Controller的关系 
 
1.2 控制器 view 的创建和加载
 

 
内存警告处理
 
1.2 控制器 view 的创建和加载
 
 
 
 
 
如果你觉得本篇文章对你有所帮助,请点击右下部“推荐”,^_^
 
 
作者:蓝田(Loto)
出处:http://www.cnblogs.com/shorfng/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
 


如有疑问,请发送邮件至 shorfng@126.com 联系我。
 
By:蓝田(Loto)

 
 


 
 

 




原标题:1.2 控制器 view 的创建和加载

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

phrases:https://www.goluckyvip.com/tag/1333.html
跨境小白选品:https://www.goluckyvip.com/tag/13330.html
阿里生态圈:https://www.goluckyvip.com/tag/13331.html
阿里助力商家:https://www.goluckyvip.com/tag/13332.html
印度央行:https://www.goluckyvip.com/tag/13333.html
印度电子支付:https://www.goluckyvip.com/tag/13334.html
夹江千佛岩景区门票(夹江千佛岩景区门票价格):https://www.vstour.cn/a/411232.html
武陵山大裂谷周围景点 武陵山大裂谷周围景点图片:https://www.vstour.cn/a/411233.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流