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可能四个视图之间比较相互依赖,有各自调用的时候,这个时候如果还是使用时才加载的话,可能不太好控制我们的程序设计。