【问题标题】:How to Push a Navigation Controller after instantiate实例化后如何推送导航控制器
【发布时间】:2017-12-23 06:25:40
【问题描述】:

我想推送我的导航控制器,但我得到了:
pushing a navigation controller is not supported

我无法实例化我的 TableView。

这是我的代码:

let newViewController = storyboard!.instantiateViewController(withIdentifier: "player") as! UINavigationController
self.navigationController?.pushViewController(newViewController, animated: true)

那么有办法推送 NavigationController 吗?

【问题讨论】:

  • 你不能推送导航控制器。你可以推送你的tableviewcontroller。
  • navigationController 应始终显示或设置为根控制器,为什么要这样做,以及为什么不直接将 tableviewcontrolller 推送到当前导航控制器
  • 为什么不能将 tableview 控制器作为导航控制器的根视图控制器并在不需要时隐藏导航栏。然后您将能够在选择任何单元格时推送第二个控制器。
  • @Ellen 我不知道该怎么做

标签: ios swift uitableview swift3 uinavigationcontroller


【解决方案1】:

将您的 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)

【讨论】:

  • 你不能推送导航控制器
【解决方案2】:

在这里我们可以看到第一行的意思是提供向下钻取的视图控制器的堆栈,所以你必须在堆栈中压入至少一个 UIViewController 对象或使堆栈的根到导航控制器的任何视图控制器。

来自苹果文档。

导航控制器管理一组视图控制器以提供 分层内容的向下钻取界面。视图层次结构 导航控制器是自包含的。它由视图组成 导航控制器直接管理和视图 由您提供的内容视图控制器管理。每个内容视图 控制器管理不同的视图层次结构,并且导航 控制器协调这些视图层次结构之间的导航。

阅读this

【讨论】:

  • 所以我实例化我的 UIViewController 然后我将我的 UITableView 推送到 UIViewController 的堆栈中然后我显示我的 UITableView ?
  • 你必须先启动TableViewController并制作UINavigationController的rootviewcontroller,然后你才能在这个navigationcontroller中推送任何viewcontroller。
猜你喜欢
  • 2016-10-14
  • 2013-04-22
  • 1970-01-01
  • 2016-05-24
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
相关资源
最近更新 更多