去掉 iOS 导航栏返回按钮文本三种方案

移动开发 iOS
方案一:该方法会出现部分子控制器页面的返回按钮文字出现的bug,需要在其子控制器页面的父控制器里再次如上设置返回按钮才行。

 [[403792]]

本文转载自微信公众号「网罗开发」,作者街角仰望。转载本文请联系网罗开发公众号。

方案一

  1. 自定义 UINavigationController
  2. 遵守 ``` 协议
  3. 实现下面方法:
  1. #pragma mark --------- UINavigationBarDelegate 
  2.  
  3. - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item { 
  4.      
  5.     //设置导航栏返回按钮文字 
  6.     UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:nil action:nil]; 
  7.     /* 
  8.     NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary]; 
  9.     textAttrs[UITextAttributeTextColor] = [UIColor whiteColor]; 
  10.     [back setTitleTextAttributes:textAttrs forState:UIControlStateNormal]; 
  11.     */ 
  12.     item.backBarButtonItem = back; 
  13.      
  14.     return YES; 

注意:该方法会出现部分子控制器页面的返回按钮文字出现的bug,需要在其子控制器页面的父控制器里再次如上设置返回按钮才行

  1. 子控制器页面的父控制器 
  2.  
  3. #pragma mark -------- 生命周期函数 
  4.  
  5. - (void)viewDidLoad { 
  6.     [super viewDidLoad]; 
  7.     // Do any additional setup after loading the view
  8.      
  9.     self.view.backgroundColor = [UIColor whiteColor]; 
  10.      
  11.     //重新设置下级子页面导航栏返回按钮文字 
  12.     UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:nil action:nil]; 
  13.     self.navigationItem.backBarButtonItem = item; 
  14.  

方案二

  1. 自定义 UINavigationController
  2. 遵守 协议
  3. 实现下面方法:
  1. #pragma mark --------- UINavigationBarDelegate 
  2.  
  3. - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item { 
  4.      
  5.     //设置导航栏返回按钮文字为透明的,可能造成导航标题不居中的问题 
  6.     [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal]; 
  7.     [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateHighlighted]; 
  8.      
  9.     return YES; 

方案三(推荐)

  1. 给 UIViewController 添加类别(这里的类别不需要导入可直接使用)
  2. 然后在 load 方法里面用 Method Swzilling 方法替换交换 ViewDidAppear 方法,代码如下:
  1. #pragma mark --------- UINavigationBarDelegate 
  2.  
  3. - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item { 
  4.      
  5.     //设置导航栏返回按钮文字为透明的,可能造成导航标题不居中的问题 
  6.     [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal]; 
  7.     [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateHighlighted]; 
  8.      
  9.     return YES; 

 

责任编辑:武晓燕 来源: 网罗开发
相关推荐

2011-04-08 11:13:50

CISCO IOS令牌桶双桶

2017-07-03 18:24:39

MySQL数据冗余

2022-07-22 20:00:01

高可用路由

2022-03-22 10:24:48

Linux开源Elasticsea

2010-08-24 14:47:48

CSS居中

2016-12-07 10:02:54

移动应用开发底部导航android

2010-09-08 15:49:21

SmartyCSS

2010-09-30 14:40:45

2010-09-25 17:17:19

2024-05-28 08:17:54

2022-07-06 07:08:58

CPythonPython返回值

2011-01-18 15:35:59

jQueryJavaScriptweb

2010-09-24 19:18:22

SQL索引

2011-09-05 12:43:23

Sencha Touc事件

2010-05-25 18:50:22

MySQL安装

2018-07-10 08:42:45

Oracle高可用集群

2022-08-19 14:24:30

forPythonpythonic

2022-12-01 08:25:03

订单超时定时任务

2020-11-24 10:13:02

Redis集群数据库

2024-08-07 08:21:05

点赞
收藏

51CTO技术栈公众号