loadView的生命周期
2015-08-22 10:16
295 查看
- (void)viewDidLoad {
[super viewDidLoad];
//在viewDidLoad方法中,不能使用superView,因为view的get方法还没有走完,肯定没有添加的其他视图上。
NSLog(@"%@",self.view.subviews);
//在init方法中不应该出现self。view,否则数据还没有加载,就直接调用viewDid了。
//请解释死循环
// self.view = nil;
// NSLog(@"%@",self.view);
//3.
}
/*
1.代码先运行get方法,先判断view是否存在,如果存在就直接return,如果不存在,就先调用loadView,再调用viewDidLoad。
2。在loadView中先判断是否存在xib文件,如果存在,就直接加载xib文件,如果不存在,就自己创建一个xib文件,并且初始化。
3.最后调用viewDidLoad
*/
- (UIView *)view{
//如果view存在。则返回
if ([self valueForKey:@"_view"]) {
return [self valueForKey:@"_view"];
}
//如果不存在,先调用loadView再调用viewDidLoad
[self loadView];
//2.
[self viewDidLoad];
return [self valueForKey:@"_view"];
}
- (void)loadView{
//判断xib是否存在
NSFileManager*manage =[NSFileManager defaultManager];
NSString *path =[[[NSBundle mainBundle]bundlePath]stringByAppendingFormat:@"/%@.nib",NSStringFromClass([self class])];
if ([manage fileExistsAtPath:path]) {
//通过加载xib文件加载视图
//1.
//loadView。。。可以返回一个含有xib文件中视图元素数组(view view1)
//owener 参数必须要写,如果不写,不会对声明了IBOutlet的变量赋值
[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
return;
}
//如果不存在xib文件,则初始化一个白的视图
UIView *v = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
v.backgroundColor = [UIColor redColor];
[self setView:v];
[super viewDidLoad];
//在viewDidLoad方法中,不能使用superView,因为view的get方法还没有走完,肯定没有添加的其他视图上。
NSLog(@"%@",self.view.subviews);
//在init方法中不应该出现self。view,否则数据还没有加载,就直接调用viewDid了。
//请解释死循环
// self.view = nil;
// NSLog(@"%@",self.view);
//3.
}
/*
1.代码先运行get方法,先判断view是否存在,如果存在就直接return,如果不存在,就先调用loadView,再调用viewDidLoad。
2。在loadView中先判断是否存在xib文件,如果存在,就直接加载xib文件,如果不存在,就自己创建一个xib文件,并且初始化。
3.最后调用viewDidLoad
*/
- (UIView *)view{
//如果view存在。则返回
if ([self valueForKey:@"_view"]) {
return [self valueForKey:@"_view"];
}
//如果不存在,先调用loadView再调用viewDidLoad
[self loadView];
//2.
[self viewDidLoad];
return [self valueForKey:@"_view"];
}
- (void)loadView{
//判断xib是否存在
NSFileManager*manage =[NSFileManager defaultManager];
NSString *path =[[[NSBundle mainBundle]bundlePath]stringByAppendingFormat:@"/%@.nib",NSStringFromClass([self class])];
if ([manage fileExistsAtPath:path]) {
//通过加载xib文件加载视图
//1.
//loadView。。。可以返回一个含有xib文件中视图元素数组(view view1)
//owener 参数必须要写,如果不写,不会对声明了IBOutlet的变量赋值
[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
return;
}
//如果不存在xib文件,则初始化一个白的视图
UIView *v = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
v.backgroundColor = [UIColor redColor];
[self setView:v];
相关文章推荐
- 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】
- 关于大型网站技术演进的思考(二)--存储的瓶颈(2)
- hdoj 3665 Seaside 【裸最短路】
- 一种即时通信中群组邮件通信的方法、装置及系统
- Struts(6)配置文件
- 关于大型网站技术演进的思考(一)--存储的瓶颈(1)
- jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
- 校验码生成工具
- HDU 4456 CDQ分治
- CSR公布蓝牙“大杀器” CSR Mesh技术细节,号称要“干掉Zigbee”
- them for the primary five fifa ballon
- 最好的Stardict词库下载地址
- Elasticsearch-Spark 体验
- WebSocket 原理,为什么可以实现持久连接?
- UVA10375 Choose and divide 质因数分解
- STL优先级队列
- POJ 3668 Game of Lines(n点最多有多少不平行直线)
- iOS 9学习系列:如何使用ATS提高应用的安全性
- android学习8(ListView高级使用)
- sqlite建表语句(特别是外键问题)