您的位置:首页 > 其它

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: