【问题标题】:Remove the back button text删除后退按钮文本
【发布时间】:2020-08-28 03:52:26
【问题描述】:

目前正在尝试删除后退按钮上前一个 VC 的标题。关注apple's documentation我用过:

let backBarButtton = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backBarButtton

但是后退按钮的标题并没有消失!控制台说它是空的(“”),但它显然仍然显示给用户。

我不想使用诸如将前一个 VC 的前一个标题设置为“”之类的技巧,但目前似乎没有其他方法起作用。有什么建议吗?

【问题讨论】:

    标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem


    【解决方案1】:

    extension of UINavigationController 试试这个函数:

    func setBackButtonTitle(_ title: String) {
        if self.navigationBar.topItem != nil {
            let leftBarButtonItem: UIBarButtonItem = UIBarButtonItem(title: title, style: UIBarButtonItem.Style.plain, target: self, action: #selector(self.backButtonAction))
            self.navigationBar.topItem?.backBarButtonItem = leftBarButtonItem
        } else {
            if self.navigationBar.backItem != nil {
                self.navigationBar.backItem?.title = title
            }
        }
    }
    

    【讨论】:

    • 我没有把它放在最上面!谢谢你:)
    • 欢迎您,如果您认为有帮助,请点赞 :)
    【解决方案2】:

    试试这个:

    self.navigationController?.navigationBar.topItem?.backBarButtonItem = backBarButtton
    

    当其他控制器推到当前控制器之上时,您的代码会更改后退按钮的外观。但是你需要修改当前控制器上的后退按钮。

    查看 backBarButtonItem 上的文档:

    当此导航项紧挨在顶部项的下方时 堆栈,导航控制器为 此导航项的导航栏。当此属性为零时, 导航项使用其标题属性中的值来创建一个 适当的后退按钮。如果要指定自定义图像或 后退按钮的标题,您可以分配自定义栏按钮项 (使用您的自定义标题或图像)改为此属性。什么时候 配置您的栏按钮项目,不要为其分配自定义视图; 导航项忽略后栏按钮中的自定义视图 无论如何。

    【讨论】:

      【解决方案3】:

      你可以用 UIButton 来初始化它

      let button = UIButton()
      let item = UIBarButtonItem(customView: button)
      navigationItem.backBarButtonItem = item
      

      【讨论】: