我想推送我的导航控制器,但我得到:
pushing a navigation controller is not supported
我无法实例化我的TableView。
这是我的代码:
let newViewController = storyboard!.instantiateViewController(withIdentifier: "player") as! UINavigationController
self.navigationController?.pushViewController(newViewController, animated: true)
所以有一种推送NavigationController的方法吗?
答案 0 :(得分:1)
这里我们可以看到第一行意味着是提供向下钻取的视图控制器堆栈,所以你必须在堆栈中推送最少的一个UIViewController对象或者使堆栈的根目录为导航控制器的任何视图控制器。
来自Apple文档。
导航控制器管理要提供的一组视图控制器 用于分层内容的深入分析界面。视图层次结构 导航控制器是自包含的。它由景观组成 导航控制器直接管理和视图 由您提供的内容视图控制器管理。每个内容视图 controller管理不同的视图层次结构和导航 控制器协调这些视图层次结构之间的导航。
阅读this
答案 1 :(得分:0)
将tableVC设置为导航控制器的根视图控制器:
let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var tableViewController = mainStoryboard.instantiateViewControllerWithIdentifier("TableViewController") as! HomeViewController
let navigationVC = UINavigationController(rootViewController: tableViewController)
appdelegate.window!.rootViewController = navigationVC
现在在TableViewController中,隐藏导航栏
self.navigationController?.setNavigationBarHidden(true, animated: false)
然后你可以像你提到的那样推送另一个视图控制器
let newViewController = storyboard!.instantiateViewController(withIdentifier: "player") as! UINavigationController
self.navigationController?.pushViewController(newViewController, animated: true)