zoukankan      html  css  js  c++  java
  • UIController中view的记载流程

    //初始化方法

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

    }

  • 相关阅读:
    phpStudy for Linux (lnmp+lamp一键安装包)
    eq,neq,gt,lt等表达式缩写
    lnmp环境的使用
    lnmp环境的搭建
    箭头函数中的this
    Vue中实现路由懒加载及组件懒加载
    Vue项目中实现路由按需加载(路由懒加载)的3中方式:
    判断数据类型的方式以及各自的优缺点
    最近工作中踩的坑
    7种方法实现CSS左侧固定,右侧自适应布局
  • 原文地址:https://www.cnblogs.com/wen-1992/p/4760565.html
Copyright © 2011-2022 走看看