如何编程修改Navigation controller返回按钮的颜色与标题

修改返回按钮颜色
返回按钮的颜色由导航栏的tintColor属性控制,支持全局统一配置和单页面单独配置:
- 全局配置(所有导航页生效):在App启动阶段(比如
AppDelegate的didFinishLaunchingWithOptions方法里)设置导航栏全局样式即可:
// 替换为你需要的UIColor即可,示例为设置成红色 UINavigationBar.appearance().tintColor = .red
- 单页面配置(仅当前LoginController页面生效):在
LoginController的viewDidLoad生命周期方法中修改当前导航栏属性:
override func viewDidLoad() { super.viewDidLoad() navigationController?.navigationBar.tintColor = .systemBlue }
修改返回按钮标题
注意:系统默认返回按钮的标题由push跳转的源页面控制,不是当前被push的页面控制,有两种常用实现方式:
- 源页面配置(保留系统原生返回样式、侧滑返回手势)
在跳转到LoginController的上一个页面的viewDidLoad中,提前设置返回按钮项:override func viewDidLoad() { super.viewDidLoad() let backItem = UIBarButtonItem() backItem.title = "自定义返回文字" // 如果不需要文字只留箭头,设为""即可 navigationItem.backBarButtonItem = backItem } - 当前页面自定义返回按钮(无需修改源页面代码,灵活度更高)
直接在LoginController中替换系统自带的左侧导航按钮,自己实现返回逻辑:override func viewDidLoad() { super.viewDidLoad() let backBtn = UIBarButtonItem( title: "返回登录", style: .plain, target: self, action: #selector(popToPrevious) ) backBtn.tintColor = .orange // 这里也可以单独给自定义按钮设置颜色 navigationItem.leftBarButtonItem = backBtn } @objc private func popToPrevious() { navigationController?.popViewController(animated: true) }
注意:用自定义leftBarButtonItem的方式默认会失效系统侧滑返回手势,如果需要保留侧滑,可以给导航控制器的
interactivePopGestureRecognizer.delegate做适配即可。
内容的提问来源于stack exchange,提问作者user13965197
相关产品推荐
相关产品推荐

