加载所有TabBar视图

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

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

谢谢

如果你把你的视图的初始化代码,并将其移动到loadView而不是viewDidLoad,你可以强制每一个UITabBarController的UIViewController加载通过简单地调用viewController.view。 发生这种情况是因为一个UIViewController会在被询问时通过loadView函数创build视图对象。

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

或者更简单

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

在iOS 8中,我创build了名为TSMainBarViewController的UITabViewController的子类。 在TSMainBarViewController函数viewDidLoad中,我只是添加了这个代码:

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

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


来自EligyD的Swift 3代码:

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

要处理可能或可能没有导航控制器的选项卡控制器:

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

如果你的视图之前有UINavigationController

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

如果您在标签栏控制器下的所有视图控制器都有一个导航栏embedded其中:

Swift 3

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

用户pandas的解决scheme不适合我。

相当于Swift

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

Swift 3:

在你的UITabBarController的viewDidLoad()

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