UIController中view的记载流程
2015-08-26 15:31 薰衣草的陪伴 阅读(121) 评论(0) 编辑 收藏 举报
//初始化方法
- (id)init{
if (self = [super init]) {
NSLog(@"%@",self.view);
}
return self;
}
//view的get方法
- (UIView *)view{
//如果View存在,就返回
if ([self valueForKey:@"_view"]) {
return [self valueForKey:@"_view"];
}
//如果不存在,先调用loadView 再调用ViewDidLoad
[self loadView];
[self viewDidLoad];
return [self valueForKey:@"_view"];
}
- (void)loadView{
//判断读取xib文件的路径是否存在
NSFileManager *manager = [NSFileManager defaultManager];
NSString *path = [[[NSBundle mainBundle]bundlePath]stringByAppendingFormat:@"/%@.nib",NSStringFromClass([self class])];
if ([manager fileExistsAtPath:path]) {
//通过xib文件加载视图
//LoadNib....可以返回一个含有xib文件中的视图元素数组(View View1)
//owner 参数必须要写,如果不写,不会对声明了IBOutle的变量赋值
[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
return;
}
//如果不存在xib文件,则初始化一个白得视图
UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
view.backgroundColor = [UIColor redColor];
//给self.view赋值
[self setView:view];
}
- (void)viewDidLoad{
[super viewDidLoad];
//在viewDidLoad方法中,不能使用superView,因为view的get方法还没有做完,肯定没有添加到其他视图
NSLog(@"%@",self.view.subviews);
//在init方法中不能出现
NSLog(@"%@",self.title);
//请解释死循环
// self.view = nil;
// NSLog(@"%@",self.view);
}