美文网首页
iOS 解决viewControl使用xib时控件为nil问题

iOS 解决viewControl使用xib时控件为nil问题

作者: Gumball_a45f | 来源:发表于2022-09-22 14:49 被阅读0次
    问题描述:在创建viewControl的同时创建了xib,将xib的控件拉入.m中,在进行控件赋值的时候发现控件为nil

    先了解一下xib中的空间是在什么时候加入到viewControl中,也就是view是在什么时候创建的。

    • 1.执行viewDidLoad方法和loadView方法
      • 发现loadViewviewDidLoad之前执行。
    • 2.探索loadView方法
      • 调用时机:当调用到viewControl的view,并且view为nil
      • 作用:创建view赋值给viewControl

    经过实验viewDidLoadloadView是在push后才执行的。

    所以你在push前做的控件赋值都是执行不了的。
    因为loadView还未执行,控件为nil

    解决方法:
    • 1.通过[vc loadViewIfNeeded]或者[vc loadView]去执行loadView,先创建出view,然后进行赋值。例如:
    UIViewController *vc = [[UIViewController alloc] init];
    [vc loadView];//  or  [vc loadViewIfNeeded];
    vc.label.text = @"我是帅哥";
    [weakSelf.navigationController pushViewController:vc animated:YES];
    
    • 2.在viewDidLoad后执行赋值。例如:
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        _label.text = @"我是帅哥";
    }
    
    总结:

    需要了解VC的创建流程。

    相关文章

      网友评论

          本文标题:iOS 解决viewControl使用xib时控件为nil问题

          本文链接:https://www.haomeiwen.com/subject/nrrnortx.html