我有一个嵌入在 NavigationController 中的 UITableView。每个单元都链接到一个更大的信息 View Controller 。出于 UI 目的,我隐藏 TableView 上的导航栏并将其显示在 InfoViewController 中。
我遇到的问题是:启动应用程序后,导航栏成功隐藏在 TableView 上。当我第一次点击单元格并打开 InfoViewController 时,导航栏会按预期返回。我退出 VC 并进入 TableView。正如预期的那样,导航栏再次被隐藏。如果我点击另一个单元格,导航栏不会按预期显示。注意:即使我删除任何代码来隐藏导航栏,也会发生这种情况。
以下是相关代码片段:
TableViewController(在 ViewDidLoad() 中):
self.navigationController?.isNavigationBarHidden = true
InfoViewController:
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.isHidden = false
super.viewWillAppear(animated)
}
为什么第一次可以用,第二次就不行了。任何帮助表示赞赏!
澄清:
应用程序打开到TableView:
我单击 TableViewCell 以转至 InfoViewController:
我点击“返回”返回到 TableViewController。导航栏仍然隐藏。我单击同一个单元格:
已编辑:弄乱了 TableViewController 代码。使用 = false
而不是 = true
。
另外,我还有一个想法,请有人帮我检查一下。 TableViewController 位于 UIContainerView 内部。几乎就好像当我点击“返回”时,我正在退出导航 Controller 流程,并且无法返回其中。
最佳答案
请尝试此代码,它可以正常隐藏navigationBar
TableViewController
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.isNavigationBarHidden = true
}
}
InfoViewController
class InfoViewController : UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.isNavigationBarHidden = false
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.isNavigationBarHidden = true
}
}
关于ios - 导航 Controller 和TableView : NavBar Hidden after hidden = true one time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585836/