关于tabbarcontroller中的初始化

我们项目中在使用tabbarController的时候,需要给这个容器添加几个viewcontroller以便在界面上显示。初始化的时候,我们可以使用

 tabbarController.viewControllers = [NSArray arrayWithObjects:A, B, C, D, nil]; 如果不指定tabbarController.selectedIndex,  tabbarController会默认的加载显示A视图. 问题是:如果我想A B C,D全部都加载呢?意思是它们的viewdidload函数都执行,应该怎么办呢?


我们可以在默认加载A的viewdidload里面转移一次tabbarController.selectedIndex的值,比如tabbarController.selectedIndex = B;这时候B的viewdidload会加载,但是不能多次的转移,比如我们tabbarController.selectedIndex = B tabbarController.selectedIndex = C tabbarController.selectedIndex = D,这样写的话,也只是执行D的viewDidload   bc的都会忽略掉,具体的原因我也不太清楚,但是在ios7测试下就是这样的结果。在A的viewdidload里面转移到B的viewLoad里面,这时候就需要在B里面再次的使用tabbarController.selectedIndex转移了,这时候不能在viewdidload和viewwillappear里面转移,只能在viewdidappear里面或者其他类似的时刻(比如APPdidbecomeActive的消息里面,说到消息,顺便提一句,消息是属于主线程的).依次下去就可以全部的加载进内存里面去了.


PS:当然,这样可能不太符合tabbarController的设计原理,因为这样加载的时间会比较久,没有用到时才加载这样的机制的打开软件速度快,但是有时候我们设计的APP可能四个视图之间比较相互依赖,有各自调用的时候,这个时候如果还是使用时才加载的话,可能不太好控制我们的程序设计。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值