我们都知道,UITabBarController作为ViewController容器的时候,TabBarController显示后,只会默认load TabBarController的第一个ViewController(或者selectedViewController)的View
只有在点击tabbar或者设置selectedViewController,selectedIndex时候,才会调用想用的ViewController的loadView与viewDidLoad。
不难理解,苹果做了一个self.view延迟加载。
最近遇到一个需求,要所有的TabBarController的viewControllers都要直接加载self.view,调用viewDidLoad等方法进行逻辑处理。
解决办法很简单,调用loadViewIfNeeded方法加载View,或者强制调用下loadView,访问viewControlle的view即可立即loadView。
for(UIViewController *viewController in _tabBarController.viewControllers){
[viewController loadViewIfNeeded]; //ios9
// __unused UIView *view = viewController.view;
}
网友评论