在 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 在 viewDidLoad() 中完美运行。那么,你能发一些代码吗? 在 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 类