IOS 改变导航栏返回按钮的标题实例详解

时间:2022-09-18 09:34:11

IOS 改变导航栏返回按钮的标题实例详解

前言:

下午又找到了一个新的方法 这个方法不错 暂时没有发现异常的地方。

   新写的App中需要使用UINavigationController对各个页面进行导航,但由于第一级页面的title较长,在进入第二级页面后返回按钮leftButtonItem的title就会变得很长,对NavigationBar空间占用很大,而且不美观,于是使用代码对leftButtonItem的title文本进行修改,无论是设置self.navigationItem.leftBarButtonItem.title = @"返回";还是self.navigationItem.backBarButtonItem.title = @"返回";都没有效果,title文本始终不会发生变化。到网上乱搜一通后,得到了以下解决方法,相对来说比较简单,特记录如下:

    在第一级页面的viewDidLoad方法中加入以下代码:

?
1
2
3
4
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
 temporaryBarButtonItem.title = @"返回";
 self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
 [temporaryBarButtonItem release];  

也就是用一个新的按钮在进行导航前将原来的返回按钮替换掉就可以了。

可以如下设置 但是这样的缺点是那个按键会变成方形 可以添加图片来进行修改。

?
1
2
3
4
5
6
7
8
9
10
11
12
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
       style:UIBarButtonItemStyleBordered
       target:self
       action:@selector(backToPrevious)];
   
  self.navigationItem.leftBarButtonItem = backButton;
  [backButton release];
 
- (void)backToPrevious
{
  [self.navigationController popViewControllerAnimated:YES];
}

添加图片的相关代码如下

?
1
2
3
4
5
6
7
8
9
UIButton *leftButton = [[UIButtonalloc] initWithFrame:CGRectMake(0, 0, 60, 40)];
  [leftButton setTitle:@"返回"forState:UIControlStateNormal];
  [leftButton setImage:[UIImageimageNamed:@"UINavigationBar.png"] forState:UIControlStateNormal];
  [leftButton setImage:[UIImageimageNamed:@"UINavigationBar.png"] forState:UIControlStateHighlighted];
  [leftButton addTarget:selfaction:@selector(leftAction:) forControlEvents:UIControlEventTouchUpInside];
  UIBarButtonItem *leftItem = [[UIBarButtonItemalloc] initWithCustomView:leftButton];
  [leftButton release];
  self.navigationItem.leftBarButtonItem = leftItem;
  [leftItem release];

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/djy1992/article/details/9127407