通过硬编码加载与标签栏控制器相关的所有视图

时间:2017-07-25 08:19:08

标签: ios swift uitabbarcontroller

我想通过代码从viewController跳转到与Tab Bar Controller相关的第一个viewController。

tabBarController场景具有故事板标识tabView

我正在以这种方式工作:

            let storyboard = UIStoryboard(name: "Main", bundle: nil)

            let vc: UITabBarController!
            storyboard.instantiateViewController(withIdentifier: "tabView")

            vc=storyboard.instantiateViewController(withIdentifier: "tabView") as! UITabBarController
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
                self.present(vc as! UIViewController, animated: true, completion: nil)
            }

但是它只加载第一个viewController(满分为5)而没有相关的标签栏。我该如何解决?

2 个答案:

答案 0 :(得分:1)

哦,这段代码看起来很错误。

  1. 在你的故事板中,给TabBarController提供“tabView”ID,而不是里面的ViewController。
  2. 为什么要双重实例化ViewController?只需执行一次并将其分配给vc变量。
  3. 为什么在呈现VC之前你已经创建了延迟?这是某种形式的解决方法吗?
  4. 工作代码:

        let vc = storyboard.instantiateViewController(withIdentifier: "tabView") as! UITabBarController
        self.present(vc, animated: true)
    

答案 1 :(得分:0)

使用

(1)如果您想从Appdelegate

导航
     let appDelegate = UIApplication.sharedApplication.delegate as! AppDelegate
     let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
     let tabBar = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! TabBarController
     appDelegate.window?.rootViewController = tabBar
     appDelegate.window?.makeKeyAndVisible()

(2)如果您想从具有导航根的viewcontroller导航

self.navigationController?.pushViewController(tabBar, animated: true)