iOS开发求助:如何隐藏导航返回按钮文字仅保留箭头
如何仅移除返回按钮文字保留箭头?
我来帮你搞定这个头疼的问题!你遇到的情况其实很常见,核心原因是你可能搞错了backBarButtonItem的设置时机和位置,另外iOS不同版本也有更简洁的解决方案,给你几种靠谱的方法:
方法1:正确设置前一个ViewController的backBarButtonItem(通用iOS版本)
你之前的代码没生效,是因为返回按钮的文字是由当前页面的前一个ViewController的navigationItem控制的,不是当前页面!你需要在跳转前的那个页面(比如A页面跳转到B页面,就在A页面的viewDidLoad或者跳转前)设置:
// 在A页面的viewDidLoad中设置 navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
这样当你从A跳转到B后,B页面的返回按钮就只有箭头,没有文字了。如果还是显示"Back",试试把标题设为空格(" "),有些版本的系统对空字符串处理会 fallback 到默认的"Back"。
方法2:iOS 14+ 极简方案:利用backButtonDisplayMode
iOS14之后苹果提供了更直接的API,不需要折腾backBarButtonItem,直接在当前页面(或者全局设置导航栏)设置:
// 当前页面的viewDidLoad中设置 navigationItem.backButtonDisplayMode = .minimal
这个属性会让返回按钮只显示箭头,完全隐藏文字,非常省心。
方法3:自定义返回按钮(适合需要完全自定义样式的场景)
如果上面的方法都不满足你的需求,比如你想换箭头图标,可以自己创建一个自定义的返回按钮,替换系统默认的:
// 当前页面的viewDidLoad中设置 let backButton = UIBarButtonItem(image: UIImage(systemName: "arrow.left"), style: .plain, target: self, action: #selector(goBack)) navigationItem.leftBarButtonItem = backButton // 实现返回方法 @objc func goBack() { navigationController?.popViewController(animated: true) }
这种方式完全由你控制按钮的样式,缺点是需要自己处理返回逻辑。
另外补充一下:你之前用的self.navigationItem.hidesBackButton会隐藏整个按钮,这是正常的,它的作用就是完全移除返回按钮,所以不是你要的效果。
内容的提问来源于stack exchange,提问作者Teddy
相关产品推荐
相关产品推荐

