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

    }

  • 相关阅读:
    【Flutter学习】之绘画实例(二)
    【Flutter学习】之绘画实例(一)
    【Flutter学习】之动画实现原理浅析(三)
    【Flutter学习】之动画实现原理浅析(二)
    NopCommerce支持多种类型的数据库
    NopCommerce 多数据库方案
    开发程序需要注意的点
    基于SVN的项目管理——集中与分散
    JS代码优化小技巧
    开发日记:中控PUSH协议
  • 原文地址:https://www.cnblogs.com/wen-1992/p/4760565.html
Copyright © 2011-2022 走看看