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

Ame*_*kic 30 uinavigationbar ios swift ios8

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

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

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

我怎样才能解决这个问题?

编辑:

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

Obj*_*eTC 50

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

self.navigationItem.setHidesBackButton(true, animated: false)
Run Code Online (Sandbox Code Playgroud)


eri*_*cgu 42

尝试添加此:

let backButton = UIBarButtonItem(title: "", style: .Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
Run Code Online (Sandbox Code Playgroud)

  • 我们知道为什么`hidesBackButton`不仅隐藏"<"(而不是"<Name")吗?这是一个功能还是一个bug?我需要隐藏"<Name",具体取决于视图控制器层次结构中的变化条件,其中替换左栏按钮项目显然会引入比它解决的更多问题. (3认同)
  • 在swift 4中,样式现在应该是`.plain` (2认同)

小智 16

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

斯威夫特3 ;

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationItem.hidesBackButton = true
}
Run Code Online (Sandbox Code Playgroud)


luh*_*iya 10

这对我有用

navigationController?.navigationBar.topItem?.hidesBackButton = true
Run Code Online (Sandbox Code Playgroud)


A.G*_*A.G 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
}
Run Code Online (Sandbox Code Playgroud)


Ha *_*uan 6

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

navigationItem.hidesBackButton = true
Run Code Online (Sandbox Code Playgroud)