Load All TabBar Views

前端 未结 7 2018
独厮守ぢ
独厮守ぢ 2020-12-05 13:59

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

相关标签:
7条回答
  • 2020-12-05 14:20

    To handle tab controllers which might or might not have navigation controllers:

    viewControllers?.forEach {
        if let navController = $0 as? UINavigationController {
            navController.topViewController?.view
        } else {
            $0.view.description
        }
    }
    
    0 讨论(0)
  • 2020-12-05 14:23

    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
    }
    
    0 讨论(0)
  • 2020-12-05 14:27

    Swift 3:

    In viewDidLoad() of your UITabBarController

    for viewController in self.viewControllers! {
        _ = viewController.view
    }
    
    0 讨论(0)
  • 2020-12-05 14:30

    if you have UINavigationController before your views

    for viewController in self.tabBarController!.viewControllers! {
        var aView = viewController.topViewController as UIViewController
        aView.view.description
    }
    
    0 讨论(0)
  • 2020-12-05 14:33

    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)];
    
    0 讨论(0)
  • 2020-12-05 14:38

    Swift equivalent...

    for viewController in self.tabBarController.viewControllers!
    {
        viewController.view;
    }
    
    0 讨论(0)
提交回复
热议问题