Swift:尽管我调用了所需的代码,但导航栏却隐藏了?

Posted

技术标签:

【中文标题】Swift:尽管我调用了所需的代码,但导航栏却隐藏了?【英文标题】:Swift: Navigation Bar ist hiding although I call the required code? 【发布时间】:2018-10-28 19:41:11 【问题描述】:

我有两个具有相同导航控制器的 VC,在我的第一个 VC 上,导航栏应该是隐藏的,而第二个应该很大。两个 VC 通过 push segue 连接。但是,如果我单击在推后出现的后退按钮,导航栏会再次出现,尽管当 VC 首次出现时没有导航栏。 我在第一个 VC 上的代码:

override func viewDidLoad() 
    super.viewDidLoad()
    navigationController!.navigationBar.isHidden = true

【问题讨论】:

【参考方案1】:

方法 viewDidLoad() 只被调用一次,所以只是 viewWillAppear 方法中的那一行代码:

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

    navigationController!.navigationBar.isHidden = true

【讨论】:

对我帮助很大 投了赞成票,因为您先回答。但是不要忘记包括“安全”或“有意义”或可读的编码实践......如果您打算在 一些 VC而不是在其他中隐藏栏,在每个 VC中明确包含你的意图并没有错。【参考方案2】:

您必须在 viewWillAppear 函数中隐藏导航栏,并且必须在您的第一个 VC 的 viewWillDisappear 函数中取消隐藏它,这样它就不会被所有 VC 隐藏。只需使用以下代码即可:

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

    // Hide the navigation bar on the this view controller
    navigationController?.setNavigationBarHidden(true, animated: animated)


override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)

    // Show the navigation bar on other view controllers
    navigationController?.setNavigationBarHidden(false, animated: animated)

【讨论】:

以上是关于Swift:尽管我调用了所需的代码,但导航栏却隐藏了?的主要内容,如果未能解决你的问题,请参考以下文章

创建自定义 psobject 时出现 op_Subtraction 错误,尽管检索到了所需的结果

尽管提供了所需的路径,如何修复“无法在您的路径中找到 Git”错误

我得到了所需的输出,但它仍然抛出一个错误,说“未找到用于打印的 glyphicon”,尽管打印 glyphicon 在输出中可见

我已经添加了所需的依赖项,但仍然遇到错误 [重复]

Debezium 失败 - 无法复制,因为主服务器清除了所需的二进制日志

在 tableview 上调用 selectRowAtIndexPath 时出现 Swift 错误