导航控制器和TableView:NavBar在隐藏= true后隐藏一次

时间:2019-02-08 04:04:55

标签: ios swift xcode uitableview uinavigationcontroller

我在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:

enter image description here

我点击进入TableViewCell以选择到InfoViewController:

enter image description here

我点击“返回”回到TableViewController。导航栏仍处于隐藏状态。我单击同一单元格:

enter image description here

编辑:弄乱了TableViewController代码。放置= false而不是= true

此外,我还有其他想法,请有人帮我检查一下。 TableViewController在UIContainerView内部。几乎就像当我按下“ Back”(返回)时一样,我正在退出NavigationController流,而无法返回。

2 个答案:

答案 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 }