如何在UITabBarController中显示ViewController?

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

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

但是当我试图:

 let rootViewController = self.window?.rootViewController as! UINavigationController rootViewController.pushViewController(vc, animated: true) 

它给了我下一个错误:

 Could not cast value of type 'UITabBarController' (0x1a899b818) to 'UINavigationController' 

后来我试着这样做:

 let rootViewController = self.window?.rootViewController as! UITabBarController 

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

 UITabBar has no member pushViewController 

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

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

例如,目前你有一个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) 

Could not cast value of type 'UITabBarController' (0x1a899b818) to 'UINavigationController'

您的根视图控制器是UITabBarController类型。 因此,您必须使用此类的适当方法而不是UINavigationController。 设置视图控制器使用其中之一

var viewControllers: [UIViewController]? 要么

func setViewControllers([UIViewController]?, animated: Bool)

要拥有导航栏,您必须实例化UINavigationController并将视图控制器添加到此导航控制器。 然后通过上述选项之一将导航控制器添加到UITabBarController。