美文网首页
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