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

时间:2015-01-22 14:19:59

标签: ios swift ios8 uinavigationbar

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

  • 当我把它放在viewDidLoad / viewWillAppear时,后退按钮箭头隐藏但字符串“Back”没有。

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

我该如何解决这个问题?

修改:

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

8 个答案:

答案 0 :(得分:41)

尝试添加此内容:

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

答案 1 :(得分:16)

您可以使用以下代码隐藏UINavigationBar上的后退按钮。

Swift 3 ;

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

答案 2 :(得分:8)

这对我有用

navigationController?.navigationBar.topItem?.hidesBackButton = true

答案 3 :(得分:6)

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
}

答案 4 :(得分:6)

尝试添加此功能,这对我有用

navigationItem.hidesBackButton = true

答案 5 :(得分:1)

这对我有用:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    self.tabBarController?.navigationItem.hidesBackButton = true
}

答案 6 :(得分:1)

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

答案 7 :(得分:0)

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