You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift如何移除导航栏返回按钮Back文字且保留返回箭头?

导航栏返回按钮"Back"文字问题解决方案

问题现象

尝试通过以下代码定位返回按钮上"Back"文字的来源,所有打印结果均为nil:

public override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)
  self.navigationController?.navigationBar.setTransparent(style: .default)
  print(self.navigationItem.backButtonTitle)
  print(self.navigationItem.backBarButtonItem?.title)
  print(self.navigationItem.title)
  print(self.navigationItem.titleView?.largeContentTitle)
}

打印输出:

nil
nil
nil
nil

尝试用self.navigationItem.setHidesBackButton(true, animated: false)会同时隐藏返回箭头和"Back"文字,无法满足保留箭头、仅移除文字的需求。
运行效果截图

原因说明

导航栏返回按钮的文案不属于当前显示的页面,而是由push栈中的上一个页面控制:当A页面push进入B页面时,B页面左上角的返回按钮文案,默认读取A页面的navigationItem.backBarButtonItem.title属性。如果A页面没有手动设置该属性,系统会自动fallback显示默认文案"Back",这个默认生成的文案不会写入当前页面的任何可读取属性,因此会出现所有相关属性打印均为nil的情况。

实现方案

方案1:单页面配置(iOS14+ 推荐,无布局兼容问题)

直接在需要隐藏"Back"文字的页面的viewDidLoad生命周期中,设置系统提供的返回按钮显示模式即可,原生保留返回箭头、移除文字,点击事件、交互逻辑完全和默认一致:

override func viewDidLoad() {
    super.viewDidLoad()
    // 仅显示返回箭头,不显示文字
    navigationItem.backButtonDisplayMode = .minimal
}

方案2:兼容低iOS版本

如果需要适配iOS14以下系统,在当前页面初始化一个空标题的返回按钮项即可:

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}

方案3:全局统一配置

如果需要App内所有页面的返回按钮都不显示文字,可以通过UIViewController分类+方法交换的方式,统一在所有页面的viewDidLoad中设置上述属性,无需每个页面单独编写代码。

内容的提问来源于stack exchange,提问作者RainCast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 09:16:10