隐藏并显示特定视图的导航栏,无需滞后动画

时间:2018-05-23 14:15:21

标签: ios swift

有没有办法在一个视图上显示导航视图而不是同时在另一个视图上显示导航视图?

问题:我有两个视图控制器 - 表和描述视图(在单击单元格时调用)。

表有一个导航栏,而描述视图 - 没有它。

表视图:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.navigationController?.isNavigationBarHidden = false
}

描述视图控制器:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController?.isNavigationBarHidden = true
}

一切正常,但是当我将半屏滑到桌面上时(将手指放在屏幕上,观看两个视图) - 我看不到导航栏(按照预期的那样工作),当我释放手指时 - 整个表视图跳转,因为显示了导航栏。

有没有办法在描述视图中看不到导航栏并在表格视图中一直看到它?

2 个答案:

答案 0 :(得分:1)

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.navigationController?.setNavigationBarHidden(false, animated: true)
}



override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController?.setNavigationBarHidden(true, animated: true)
}

答案 1 :(得分:0)

您可以在执行segue(之前)时隐藏导航栏。如果您以编程方式执行此操作:

yourVCToBePushed.navigationController?.isNavigationBarHidden = true

如果您在故事板中进行此操作,请在prepareForSegue中进行类似操作:

let yourVCToBePushed = segue.destination as! YourVCToBePushed (type)
   yourVCToBePushed.navigationController?.isNavigationBarHidden = true

您还可以创建自己的" navigationView"在tableView标题内,并在那里添加按钮。