我在NavigationController中嵌入了一个UITableView。每个单元链接到更大的信息ViewController。为了实现UI,我在TableView上隐藏了导航栏,并将其显示在InfoViewController中。
我遇到的问题是:启动应用程序后,NavBar成功隐藏在TableView上。第一次进入单元格并打开InfoViewController时,NavBar会按预期返回。我退出该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内部。几乎就像当我按下“ Back”(返回)时一样,我正在退出NavigationController流,而无法返回。
答案 0 :(得分:0)
请尝试使用此代码来隐藏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
}
}
答案 1 :(得分:0)
再次显示视图控制器时,再次简单地隐藏导航栏,
在tableViewController中执行以下代码:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.isNavigationBarHidden = true
}