如何在UITabBarController中显示ViewController?

J. *_*Doe 3 storyboard uitabbarcontroller pushviewcontroller ios swift

我有一个UITabBarController,所有其他视图控制器都连接到它.现在我想将我的控制器显示为:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc: ViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
Run Code Online (Sandbox Code Playgroud)

但是当我试图:

let rootViewController = self.window?.rootViewController as! UINavigationController
rootViewController.pushViewController(vc, animated: true)
Run Code Online (Sandbox Code Playgroud)

它给了我下一个错误:

Could not cast value of type 'UITabBarController' (0x1a899b818) to 'UINavigationController'
Run Code Online (Sandbox Code Playgroud)

后来我试着这样做:

let rootViewController = self.window?.rootViewController as! UITabBarController
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下我得到了

UITabBar has no member pushViewController
Run Code Online (Sandbox Code Playgroud)

如何显示/推送我的ViewController,以便它与UINavigationBar一起显示在UITabBar中?

fik*_*iks 10

您需要将每个视图控制器放在导航控制器中.

例如,目前你有一个TabBarViewController和两个视图控制器:

  • ViewControllerA
  • ViewControllerB

您需要做的是将每个嵌入到导航控制器中,这样您就可以:

  • UINavigationController - > ViewControllerA
  • UINavigationController - > ViewControllerB

为了推动一个新的控制器你会做:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc: ViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController

let navViewController = myTabBar.selectedViewController as? UINavigationController
navViewController?.pushViewController(vc, animated: true)
Run Code Online (Sandbox Code Playgroud)