删除 UINavigationBar 后退按钮标题

Remove UINavigationBar back button title

有没有办法删除应用的 所有 视图控制器中后退按钮项目的标题?


注意:重要的是all字。我最接近的是 this solution:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
                                                     forBarMetrics:UIBarMetricsDefault];

但正如我在评论中提到的那样,存在将大标题推到右侧的问题,因此该解决方案无效。

试试这个

self.navigationItem.hidesBackButton = YES;

隐藏显式(您自己设置的)后退按钮

self.navigationItem.leftBarButtonItem = nil;

只需将后退按钮的title设置为""

这是 swift

中的示例
self.navigationItem.backBarButtonItem = UIBarButtonItem(
        title: "",
        style: UIBarButtonItemStyle.Plain,
        target: nil,
        action: nil)

要在所有视图控制器中执行此操作,我通常会创建一个 BaseViewController,其中我将该行包含在 viewDidLoad 方法中。然后当我有一个 viewcontroller 时,我将它子类化为 BaseViewController

如果您还移动 x 值 -150,您的解决方案可能会奏效,但对我来说这听起来像是 hack,因为您仍然一直显示它,但超出了视图范围。

一种未提及的实现方法是使用在标签中显示标题的自定义平铺视图,然后从不实际设置 ViewController 的标题 属性。

这应该在 UIViewController 的扩展或基础中设置 class。

那么您根本不必更改 barButtonItem,您可以选择对标题进行更多更改(包括字幕等)

像这样:

extension UIViewController {

    func setTitleView(title:String) {
        let titleView = CustomTitleView()
        titleView.titleLabel.text = title
        self.navigationItem.titleView = titleView
    }
}

如果您设置一个简单的 CustomTitleView nib,带有一个标签出口和一些约束。

编辑:

标题 属性 需要在所有 VC 上设置为“ ”。这样,下一个按下的 VC 中的后退按钮文本将被命名为“”

要更改 UINavigationController 的后退按钮的标题,您只需:

Swift:

navigationController?.navigationBar.topItem?.title = ""

您可以将其添加到正在推送的新 viewController 的 viewWillAppear 中,或者添加到 UIViewController 的自定义基础 class 中。