在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮

Posted

技术标签:

【中文标题】在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮【英文标题】:Hide back button in navigation bar with hidesBackButton in Swift 【发布时间】: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 上) 【参考方案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 中(可能更快,不确定),如果您不希望以编程方式执行此操作,也可以取消选中情节提要编辑器中属性检查器选项卡下的框。

【讨论】:

以上是关于在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

swift 优雅地处理Swift中可本地化的字符串。注意:此代码在Swift 2中,需要在现代Swift中使用更新。

在 Swift 项目中使用 Objective C 类中的 Swift 类

在 Swift 项目中使用 Objective C 类中的 Swift 类

如何在 Swift 中使用 Apple 地图 - 你必须使用 C 还是 Swift 可以?

swift 在swift中使用javascriptcore

swift 在swift中使用枚举练习