iOS-自定义NavigationItem返回按钮pop返回按钮

Posted 小K’s Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-自定义NavigationItem返回按钮pop返回按钮相关的知识,希望对你有一定的参考价值。

在用navigationVC时,返回按钮有时候不想用系统的,这里用继承的方式把按钮替换了,同时也可以实现系统的右滑返回,很简单;

1.创建基类 BasePopViewController

创建一个用于替换系统返回按钮基类的 BasePopViewController : UIViewController;

BasePopViewController.m

#import "BasePopViewController.h"

@interface BasePopViewController ()

@end

@implementation BasePopViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNavigationItemBackButton];
    self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    if (self.navigationController.viewControllers.count > 1) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }else{
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
}

/**
 自定义返回按钮
 */
- (void)setNavigationItemBackButton{
    if (self.navigationController.viewControllers.count > 1) {
        
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(0, 0, 40, 44);
        btn.adjustsImageWhenHighlighted = NO;
        [btn setImage:[UIImage imageNamed:@"back_off"] forState:UIControlStateNormal];
        ///靠左
        btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        [btn setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)];
        [btn addTarget:self action:@selector(popBackButtonAction) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithCustomView:btn];
        self.navigationItem.leftBarButtonItems = @[item];
    }
}

/**
 返回按钮事件
 */
- (void)popBackButtonAction {
    [self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - 下面是设置的状态栏颜色,可忽略
-(UIStatusBarStyle)preferredStatusBarStyle{
    ///这里设置白色
    return UIStatusBarStyleLightContent;
}
-(BOOL)prefersStatusBarHidden{
    return NO;
}
@end

 

2.引用

在需要替换系统的返回按钮时,新建VC继承BasePopViewController即可,如果要在新的VC中获取点击的返回按钮事件,在新的VC中重写 popBackButtonAction 事件即可。

 

 

 

以上是关于iOS-自定义NavigationItem返回按钮pop返回按钮的主要内容,如果未能解决你的问题,请参考以下文章

iOS 自定义返回按钮,保留系统滑动返回

UINavigationBar 自定义后退按钮不带标题

UINavigationBar 自定义后退按钮不带标题

关于自定义navigationItem,实现右侧多个按钮

导航栏的返回按钮自定义文字

在 ios 6/ios 7 兼容应用程序中更改导航返回按钮操作