BOutlet变量的生命周期 IBOutlet怎么会是nil呢(内功篇)

当使用initWithNibName 初始化viewController时,发现IBoutlet修饰的变量为nil。原因是该viewController或view没有加载到当前视图中,不处于活动状态。

类似的一个情况: http://blog.prosight.me/index.php/tag/iboutlet

今天遇到一个问题困扰了很久。 代码如下:
1.
2. FileOverviewViewControll er *fileOverviewViewControll er =[[FileOverviewViewControll er alloc]initWithNibName:@”FileOverviewView” bundle:nil];
3. // AAAAA
4. [self.navigationControllerpushViewController:fileOverviewViewControll er animated:YES];
5. // BBBBBB
6.
如果你有这个Controller中的view里面有IBOutlet的变量,如果你在A的地方进行赋值或者其他操作的话,界面将不会有任何更新,那些IBoutlet变量的值都为NULL,如果在B处设置就可以正常显示了。
结论: 如果你使用navigation Controller的话,一定要在push了这个ViewController之后再操作这个ViewController中的IBOutlet变量,否则这个变量会因为不在作用范围内而无法操作。
扩展开来也就是说只有当一个ViewController被载入处于活动状态的时候,这个ViewController中的IBOutlet变量才能正常使用,否则都会因为不在作用范围内而无法正常使用的

如果不使用navigation Controlle的话,必须在

[XXViewaddSubview:fileOverviewViewController.view]后再使用IBoutlet变量


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值