加载所有TabBar视图

时间:2012-02-08 22:48:49

标签: ios uitabbarcontroller

我有一个tabbar控制器作为根视图控制器。我想预先加载tab [1,2,3]的视图(选项卡0自动加载为第一个选项卡)。

我基本上希望viewdidload中的代码在用户点击选项卡之前运行。

由于

8 个答案:

答案 0 :(得分:33)

如果您使用视图初始化代码并将其移动到loadView而不是viewDidLoad,则可以通过简单地调用viewController.view来强制加载属于UITabBarController一部分的每个UIViewControllers。发生这种情况是因为UIViewController会在被要求时通过loadView函数创建视图对象。

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

或更简单

[tabBarController.viewControllers makeObjectsPerformSelector:@selector(view)];

答案 1 :(得分:15)

在iOS 8中,我创建了一个名为TSMainBarViewController的UITabViewController的子类。在TSMainBarViewController的函数viewDidLoad中,我刚刚添加了这段代码:

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

然后将加载所有viewControllers(UINavigationController的root viewController)。我的所有viewControllers都是在StoryBoard中创建的。不要在UIViewController中实现函数loadView

来自EligyD的

Swift 3代码:

for viewController in self.viewControllers! {
    _ = viewController.view
}

答案 2 :(得分:8)

要处理可能有也可能没有导航控制器的标签控制器:

viewControllers?.forEach {
    if let navController = $0 as? UINavigationController {
        navController.topViewController?.view
    } else {
        $0.view.description
    }
}

答案 3 :(得分:2)

如果标签栏控制器下的所有视图控制器都嵌入了导航栏:

Swift 3

for navViewController in self.viewControllers! {
    _ = navViewController.childViewControllers[0].view
}

用户Panda的解决方案对我不起作用。

答案 4 :(得分:1)

如果您在观看之前有UINavigationController

for viewController in self.tabBarController!.viewControllers! {
    var aView = viewController.topViewController as UIViewController
    aView.view.description
}

答案 5 :(得分:0)

斯威夫特3:

在你的UITabBarController的viewDidLoad()

for viewController in self.viewControllers! {
    _ = viewController.view
}

答案 6 :(得分:0)

斯威夫特 5:

viewControllers?.forEach {
  if let navController = $0 as? UINavigationController {
     let _ = navController.topViewController?.view
  } else {
      let _ = $0.view.description
    }
 }

答案 7 :(得分:-1)

Swift等同......

for viewController in self.tabBarController.viewControllers!
{
    viewController.view;
}