【问题标题】:UINavigationController hides back button only on second appearance of viewUINavigationController 仅在视图的第二次出现时隐藏后退按钮
【发布时间】:2015-02-22 22:27:15
【问题描述】:

我有三个视图控制器:登录视图、主表视图屏幕和详细表视图屏幕。这些都是同一个 UINavigationController 的一部分。在主屏幕上,我想禁用后退按钮,以防止用户返回登录屏幕。所以在viewDidLoad() 函数中我有

// Home View
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.hidesBackButton = true
    ...
}

当此视图显示时,没有返回箭头,但有“返回”一词。这个按钮什么也没做,它似乎被禁用了。当我转到下一个视图(详细视图)时,后退按钮被隐藏。即使我在这个视图的viewDidLoad 中添加了hidesBackButton = false,仍然没有。但是,在导航栏上向右滑动可以返回。

现在我回到主屏幕,后退按钮完全隐藏。如果我要再次前进到详细视图,则返回按钮会根据需要显示。

以下是事件顺序:

  1. 登录屏幕。登录后会弹出主屏幕。

  1. 主屏幕。后退按钮在那里,它不应该在那里。

  1. 详细视图。这个视图应该有一个返回按钮来返回主屏幕。滑动功能仍然有效,因此您可以通过滑动导航栏返回主屏幕。

  1. 返回后,返回按钮消失了!应该是这样。

  1. 最后,返回(前进)到详细视图,返回按钮应有的样子。

【问题讨论】:

    标签: ios iphone swift uinavigationcontroller back


    【解决方案1】:

    我在模拟器上重置了内容和设置,这似乎解决了问题。

    我仍然不知道为什么会出现这个错误。

    真正的解决方案

    This 解决方案实际上似乎对我有用!

    我只是添加了

    var HVC = segue.destinationViewController as! HomeViewController
    HVC.navigationItem.setHidesBackButton(true, animated: false)
    

    到创建有问题的 VC 的 ViewController 中的 prepareForSegue 方法。

    【讨论】:

      【解决方案2】:

      尝试添加这个:

      let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
      navigationItem.leftBarButtonItem = backButton
      

      【讨论】:

        【解决方案3】:

        我遇到了与上述完全相同的问题,我的解决方案是使用:

        self.navigationItem.setHidesBackButton(true, animated: false)
        

        override func viewDidAppear { ... }
        

        当我在 viewDidLoad 中有 setHidesBackButton 代码时,我得到了同样的错误,但按照说明移动它就可以了!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-17
          • 1970-01-01
          • 2010-10-09
          • 1970-01-01
          • 2010-10-25
          • 2011-06-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多