【问题标题】:Navigation Controller & TableView: NavBar Hidden after hidden = true one timeNavigation Controller & TableView: NavBar Hidden after hidden = true 一次
【发布时间】:2019-07-02 07:22:51
【问题描述】:

我在 NavigationController 中嵌入了一个 UITableView。每个单元都链接到一个更大的信息 ViewController。出于 UI 目的,我将导航栏隐藏在 TableView 上,并将其显示在 InfoViewController 中。

我遇到的问题是:在启动应用程序时,NavBar 成功隐藏在 TableView 上。第一次点击单元格并打开 InfoViewController 时,NavBar 会按预期返回。我退出了那个 VC 并进入了 TableView。再次,正如预期的那样,NavBar 被隐藏了。如果我点击另一个单元格,则导航栏不会按预期显示。注意:即使我删除任何代码以隐藏导航栏,也会发生这种情况。

下面是相关代码sn-ps:

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 以 Segue 到 InfoViewController:

enter image description here

我点击“返回”返回 TableViewController。导航栏仍然隐藏。我点击同一个单元格:

enter image description here

已编辑:搞砸了 TableViewController 代码。用= false 代替= true

另外,我还有一个想法,请有人帮我检查一下。 TableViewController 位于 UIContainerView 内。就好像当我点击“返回”时,我正在退出 NavigationController 流程​​,但我无法再回到其中。

【问题讨论】:

    标签: ios swift xcode uitableview uinavigationcontroller


    【解决方案1】:

    请试试这段代码,它可以很好地隐藏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
        }
    }
    

    【讨论】:

      【解决方案2】:

      当视图控制器再次出现时再次简单地隐藏导航栏,

      在 tableViewController 中执行以下代码:

      override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.navigationController?.isNavigationBarHidden = true }

      【讨论】:

        猜你喜欢
        • 2011-07-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-17
        • 2011-04-03
        • 2023-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多