Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Load All TabBar Views

I have a tabbar controller as the root view controller. I would like to pre-load the views of tab [1,2,3] (tab 0 loads as the first tab automatically).

I essentially would like the code in viewdidload to run before the user taps on the tab.

Thanks

like image 921
Laurent May Avatar asked Feb 08 '12 22:02

Laurent May


2 Answers

If you take your view initialization code and move it into loadView instead of viewDidLoad you can force each of the UIViewControllers that are part of your UITabBarController to be loaded by simply calling viewController.view. This happens because a UIViewController will create the view object via the loadView function when asked for it.

for(UIViewController * viewController in  tabBarController.viewControllers){    viewController.view; } 

or more simply

[tabBarController.viewControllers makeObjectsPerformSelector:@selector(view)]; 
like image 146
Joel Kravets Avatar answered Sep 27 '22 21:09

Joel Kravets


In iOS 8, I created a subclass of UITabViewController named TSMainBarViewController. In the function viewDidLoad of TSMainBarViewController, I just added this code:

for(UINavigationController * viewController in self.viewControllers){     [[viewController.viewControllers firstObject] view]; } 

Then all the viewControllers (root viewController of UINavigationController) will load . All my viewControllers are created in the StoryBoard. Do not implement the function loadView in the UIViewController.


Swift 3 code from EligyD:

for viewController in self.viewControllers! {     _ = viewController.view } 
like image 41
guozqzzu Avatar answered Sep 27 '22 22:09

guozqzzu