如何在UITabBarController中加载所有视图?

Sam*_*Sam 11 load launch uitabbarcontroller ios swift

我没有在与此问题相关的帖子中找到相关和最新的答案.

我想在启动时加载所有viewcontrollers.目前它按预期启动,但是当我点击一个条形项目(第一次)时,加载它有一点延迟,因为它尚未加载.

我怎么能这样做是Swift?

谢谢.

Rob*_*ert 18

预加载 UIViewController视图,只需访问其view属性:

let _ = myViewController.view
Run Code Online (Sandbox Code Playgroud)

预加载a上的所有视图控制器 UITabBarController,您可以执行以下操作:

if let viewControllers = tabBarController.viewControllers {
    for viewController in viewControllers {
        let _ = viewController.view
    }
}
Run Code Online (Sandbox Code Playgroud)

或者更紧凑:

tabBarController.viewControllers?.forEach { let _ = $0.view }
Run Code Online (Sandbox Code Playgroud)


小智 6

罗伯特上面的回答对我有用,但我有 UINavigationControllers 作为每个选项卡的初始视图控制器。因此我不得不打电话

viewControllers.forEach { $0.view }
Run Code Online (Sandbox Code Playgroud)

在我的 UINavigationControllers 中,以便加载它们的根视图控制器。希望能帮助山姆。


JRa*_*elM 5

结合Robert's和M. Daigle的解决方案,我想到了这样的东西:

for viewController in tabBarController?.viewControllers ?? [] {
    if let navigationVC = viewController as? UINavigationController, let rootVC = navigationVC.viewControllers.first {
        let _ = rootVC.view
    } else {
        let _ = viewController.view
    }
}
Run Code Online (Sandbox Code Playgroud)

将此添加到您的第一个ViewController的ViewDidLoad中,并可以完成操作...