zoukankan      html  css  js  c++  java
  • loadView的生命周期

    - (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];

  • 相关阅读:
    使用git管理github项目
    router 跳转页面
    JS中[object object]怎么取值
    微信授权获取code
    闭包
    css属性clear
    javaScript循环
    css属性position
    跨域
    浅析JS内存 一
  • 原文地址:https://www.cnblogs.com/yxt9322yxt/p/4749702.html
Copyright © 2011-2022 走看看