【问题标题】:Hide back button in navigation bar with hidesBackButton in Swift在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮
【发布时间】:2015-01-22 14:19:59
【问题描述】:

我想在从一个视图转换到另一个视图时隐藏后退按钮。我阅读了有关此问题的问题,每个答案都是“使用hidesBackButton”。这样做的问题是:

  • 当我将它放入 viewDidLoad/viewWillAppear 时,后退按钮箭头会隐藏,但字符串“Back”不会。

  • 当我把它放在 viewDidAppear 中时,后退按钮消失了,但它对用户可见

我该如何解决这个问题?

编辑:

您可以通过以下方式复制此问题(或错误?)
在 Xcode 中使用 Swift 创建一个新的选项卡式应用程序。在 FirstViewController.swift 中使用 performSegueWithIdentifier 导航到第二个视图控制器。在 SecondViewController.swift 中使用 hidesBackButton 隐藏导航栏后退按钮,您将看到问题所在。

【问题讨论】:

  • 似乎您的问题出在其他地方。 self.navigationItem.hidesBackButton = YES 在 vi​​ewDidLoad() 中完美运行。那么,你能发一些代码吗?
  • 在 Xcode 中使用 Swift 创建一个新的选项卡式应用程序。在FirstViewController.swift 中使用performSegueWithIdentifier 导航到第二个视图控制器。在SecondViewController.swift 中使用hidesBackButton 隐藏导航栏后退按钮,您将看到问题所在。
  • @zinnuree 你遇到和我一样的问题了吗?
  • @zinnuree 这里有同样的问题。 (在viewWillAppear: 中的 iOS 8.1 上)

标签: ios swift ios8 uinavigationbar


【解决方案1】:

用最新的 Swift 隐藏后退按钮:

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

【讨论】:

  • 这不应该是:self.navigationItem.setHidesBackButton(true, animated: false) 既然他要隐藏后退按钮?
  • @JordiSipkens - 是的,谢谢。我已经编辑了答案,以便命令 隐藏 后退按钮。在关闭视图之前使用 false 再次显示返回按钮,这应该在使用导航控制器时完成。
【解决方案2】:

尝试添加这个:

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

【讨论】:

  • 我们知道为什么hidesBackButton 不仅隐藏“
  • 不确定。我会使用枚举
  • 你可以在很多地方做到这一点。
  • 这也适用于我。 self.navigationItem.hidesBackButton = true 在 ViewDidLoad 和 ViewDidAppear 中对我都不起作用
  • 在 swift 4 中,样式现在应该是.plain
【解决方案3】:

您可以使用下面的代码隐藏UINavigationBar 上的返回按钮。

斯威夫特 3;

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationItem.hidesBackButton = true
}

【讨论】:

    【解决方案4】:

    这对我有用

    navigationController?.navigationBar.topItem?.hidesBackButton = true
    

    【讨论】:

      【解决方案5】:
      override func viewDidLoad() {
          super.viewDidLoad()
          // Do any additional setup after loading the view.
      
          self.navigationController?.navigationBarHidden = false
          var button: UIButton = UIButton()
          button.setImage(UIImage(named: "person-icon.jpg"), forState: .Normal)
          button.frame = CGRectMake(0, 0, 25, 25)
          button.targetForAction("actioncall", withSender: nil)
          var rightItem:UIBarButtonItem = UIBarButtonItem()
          rightItem.customView = button
          self.navigationItem.rightBarButtonItem = rightItem
      
          let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
          navigationItem.leftBarButtonItem = backButton
      }
      
      override func viewWillAppear(animated: Bool) {
          let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
          navigationItem.leftBarButtonItem = backButton
      }
      

      【讨论】:

        【解决方案6】:

        尝试添加这个,这对我有用

        navigationItem.hidesBackButton = true
        

        【讨论】:

          【解决方案7】:

          这对我有用:

          override func viewWillAppear(animated: Bool)
          {
              super.viewWillAppear(animated)
          
              self.tabBarController?.navigationItem.hidesBackButton = true
          }
          

          【讨论】:

            【解决方案8】:

            当我在 init() 中设置它而不是 viewDidLoad 时为我工作。虽然很奇怪

            【讨论】:

              【解决方案9】:

              在 XCode 11 中(可能更快,不确定),如果您不希望以编程方式执行此操作,也可以取消选中情节提要编辑器中属性检查器选项卡下的框。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-04-21
                • 2013-01-13
                • 2012-07-03
                • 1970-01-01
                • 2015-02-07
                • 2020-11-13
                • 2015-11-11
                • 1970-01-01
                相关资源
                最近更新 更多