三个导航栏Item的区别(leftBarButtonItem/backBarButtonItem/backItem)

18 篇文章 1 订阅

UINavigationItem有三种:backBarButtonItemleftBarButtonItemrightBarButtonItem

self.navigationItem.leftBarButtonItem

self.navigationItem.backBarButtonItem

self.navigationController.navigationBar.backItem
  1. 如果设置了leftBarButtonItem,会替换掉backBarButtonItem
    但可以设置leftItemsSupplementBackButtonYES,来同时显示leftBarButtonItembackBarButtonItem

leftBarButtonItem自定义方式如下:

    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [backBtn setTitleColor:[UIColor colorWithRed:74 / 255.0 green:74 / 255.0 blue:74 / 255.0 alpha:1.0] forState:UIControlStateNormal];
    [backBtn setTitle:@"  返回" forState:UIControlStateNormal];
    [backBtn setImage:[UIImage imageNamed:@"NewBackButton"] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
[backBtn sizeToFit];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];

- (void)popViewController:(UIButton *)sender {
    [self.navigationController popViewControllerAnimated:YES];
}
  1. backBarButtonItem是返回按钮,可以自定义。注意:假如想实现第二个ViewControllerbackBarButtonItem,就要先在第一个ViewController中设置backBarButtonItem
    // 自定义返回按钮
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init];
    [backItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor colorWithRed:74 / 255.0 green:74 / 255.0 blue:74 / 255.0 alpha:1.0], NSFontAttributeName:[UIFont systemFontOfSize:18]} forState:UIControlStateNormal];
    backItem.title = [NSString stringWithFormat:@"返回"];
    backItem.image = [UIImage imageNamed:@"NewBackButton"];
    self.navigationItem.backBarButtonItem = backItem;

这样才会在第二个ViewController中有效果出现,显示返回按钮样式;​否则,则无设置效果。

  1. backItem只是一个只读属性,不能设置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值