【发布时间】:2012-03-01 10:39:27
【问题描述】:
我有一个标签栏控制器作为根视图控制器。我想预加载选项卡 [1,2,3] 的视图(选项卡 0 自动加载为第一个选项卡)。
我基本上希望 viewdidload 中的代码在用户点击选项卡之前运行。
谢谢
【问题讨论】:
我有一个标签栏控制器作为根视图控制器。我想预加载选项卡 [1,2,3] 的视图(选项卡 0 自动加载为第一个选项卡)。
我基本上希望 viewdidload 中的代码在用户点击选项卡之前运行。
谢谢
【问题讨论】:
斯威夫特 5:
viewControllers?.forEach {
if let navController = $0 as? UINavigationController {
let _ = navController.topViewController?.view
} else {
let _ = $0.view.description
}
}
【讨论】:
斯威夫特 3:
在您的 UITabBarController 的 viewDidLoad() 中
for viewController in self.viewControllers! {
_ = viewController.view
}
【讨论】:
如果您将视图初始化代码移动到 loadView 而不是 viewDidLoad,您可以通过调用 viewController.view 来强制加载作为 UITabBarController 一部分的每个 UIViewController。这是因为 UIViewController 会在请求时通过 loadView 函数创建视图对象。
for(UIViewController * viewController in tabBarController.viewControllers){
viewController.view;
}
或者更简单
[tabBarController.viewControllers makeObjectsPerformSelector:@selector(view)];
【讨论】:
-(void)loadView{[self.tabBarController.viewControllers makeObjectsPerformSelector:@selector(view)];} 添加到我的视图控制器中。
如果标签栏控制器下的所有视图控制器都嵌入了导航栏:
斯威夫特 3
for navViewController in self.viewControllers! {
_ = navViewController.childViewControllers[0].view
}
User Panda 的解决方案对我不起作用。
【讨论】:
在 iOS 8 中,我创建了一个名为 TSMainBarViewController 的 UITabViewController 子类。在TSMainBarViewController的函数viewDidLoad中,我刚刚添加了这段代码:
for(UINavigationController * viewController in self.viewControllers){
[[viewController.viewControllers firstObject] view];
}
然后所有的 viewController(UINavigationController 的根 viewController)都会加载。我所有的 viewController 都是在 StoryBoard 中创建的。请勿在 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
}
【讨论】:
Swift 等效...
for viewController in self.tabBarController.viewControllers!
{
viewController.view;
}
【讨论】: