在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮
Hide back button in navigation bar with hidesBackButton in Swift
我想在从一个视图转换到另一个视图时隐藏后退按钮。我阅读了有关此问题的问题,每个答案都是 "use hidesBackButton
"。问题是:
当我把它放在 viewDidLoad/viewWillAppear 中时,后退按钮箭头隐藏但字符串 "Back" 没有。
当我把它放在 viewDidAppear 中时,后退按钮消失了,但它对用户可见
我该如何解决这个问题?
编辑:
这是重现此问题(或错误?)的方法
在 Xcode 中使用 Swift 创建一个新的 Tabbed 应用程序。在 FirstViewController.swift 中使用 performSegueWithIdentifier 导航到第二个视图控制器。在 SecondViewController.swift 中使用 hidesBackButton 隐藏导航栏后退按钮,您将看到问题所在。
尝试添加这个:
let backButton = UIBarButtonItem(title: "", style: .Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
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
}
用最新的Swift隐藏后退按钮:
self.navigationItem.setHidesBackButton(true, animated: false)
这对我有用:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
self.tabBarController?.navigationItem.hidesBackButton = true
}
尝试添加这个,这对我有用
navigationItem.hidesBackButton = true
您可以使用下面的代码隐藏 UINavigationBar
上的后退按钮。
Swift 3;
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.hidesBackButton = true
}
这对我有用
navigationController?.navigationBar.topItem?.hidesBackButton = true
当我在 init() 而不是 viewDidLoad 中设置它时对我有用。虽然奇怪
在 XCode 11 中(可能会更快,不确定),如果您不想以编程方式执行此操作,也可以取消选中情节提要编辑器中属性检查器选项卡下的框。
我想在从一个视图转换到另一个视图时隐藏后退按钮。我阅读了有关此问题的问题,每个答案都是 "use hidesBackButton
"。问题是:
当我把它放在 viewDidLoad/viewWillAppear 中时,后退按钮箭头隐藏但字符串 "Back" 没有。
当我把它放在 viewDidAppear 中时,后退按钮消失了,但它对用户可见
我该如何解决这个问题?
编辑:
这是重现此问题(或错误?)的方法
在 Xcode 中使用 Swift 创建一个新的 Tabbed 应用程序。在 FirstViewController.swift 中使用 performSegueWithIdentifier 导航到第二个视图控制器。在 SecondViewController.swift 中使用 hidesBackButton 隐藏导航栏后退按钮,您将看到问题所在。
尝试添加这个:
let backButton = UIBarButtonItem(title: "", style: .Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
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
}
用最新的Swift隐藏后退按钮:
self.navigationItem.setHidesBackButton(true, animated: false)
这对我有用:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
self.tabBarController?.navigationItem.hidesBackButton = true
}
尝试添加这个,这对我有用
navigationItem.hidesBackButton = true
您可以使用下面的代码隐藏 UINavigationBar
上的后退按钮。
Swift 3;
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.hidesBackButton = true
}
这对我有用
navigationController?.navigationBar.topItem?.hidesBackButton = true
当我在 init() 而不是 viewDidLoad 中设置它时对我有用。虽然奇怪
在 XCode 11 中(可能会更快,不确定),如果您不想以编程方式执行此操作,也可以取消选中情节提要编辑器中属性检查器选项卡下的框。