如何在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。
- 自定义标记性能iOS,崩溃结果“((null)”为false:达到纹理图集的最大数量,不能分配更多。“
- iOS:推送相同的视图控制器
- UIButton titleEdgeInsets
- instantiateInitialViewController和instantiateViewControllerWithIdentifier之间有什么区别?
- ios5 – 与故事板模式视图控制器的大小
- RestKit:如何删除核心数据条目以使内容与服务器保持同步?
- UISearchController在推送时不会隐藏视图
- 条形码扫描器设备通过蓝牙连接到IOS时,默认键盘不会进入
- 如何将UITableViewCell与UITableView的底部alignment?