喃们都知道,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。
1 2 3 4 |
for(UIViewController *viewController in _tabBarController.viewControllers){ [viewController loadViewIfNeeded]; //ios9 // __unused UIView *view = viewController.view; } |