1.扩展UIviewController
UIViewController+BackButtonHandler.h

#import <UIKit/UIKit.h>
@protocol BackButtonHandlerProtocol <NSObject> @optional // Override this method in UIViewController derived class to handle 'Back' button click -(BOOL)navigationShouldPopOnBackButton; @end @interface UIViewController (BackButtonHandler) <BackButtonHandlerProtocol> @end

UIViewController+BackButtonHandler.m文件

 #import "UIViewController+BackButtonHandler.h"@implementation UIViewController (BackButtonHandler) @end

2.扩展UINavigationController ,也可以继承 使用

@implementation UINavigationController (ShouldPopOnBackButton) - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem*)item { if([self.viewControllers count] < [navigationBar.items count]) { return YES; } BOOL shouldPop = YES; UIViewController* vc = [self topViewController]; if([vc respondsToSelector:@selector(navigationShouldPopOnBackButton)]) { shouldPop = [vc navigationShouldPopOnBackButton]; } if(shouldPop) { dispatch_async(dispatch_get_main_queue(), ^{ [self popViewControllerAnimated:YES]; }); } else { // Workaround for iOS7.1. Thanks to @boliva - http://stackoverflow.com/posts/comments /34452906 for(UIView *subview in [navigationBar subviews]) { if(subview.alpha < 1.) { [UIView animateWithDuration:.25 animations:^{ subview.alpha = 1.; }]; } } } return NO; } @end

3.测试使用

#import "ViewController.h
#import "UIViewController+BackButtonHandler.h"@implementation ViewController -(void) viewDidLoad { [super viewDidLoad]; self.title = [NSString stringWithFormat:@"Screen-%d", self.navigationController.viewControllers.count]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStylePlain target:selfaction:@selector(onNextBtn:)]; } -(void) onNextBtn:(id)sender { [self.navigationController pushViewController:[ViewController new] animated:YES]; } -(BOOL) navigationShouldPopOnBackButton ///在这个方法里写返回按钮的事件处理 { //这里写要处理的代码 [self.navigationController popViewControllerAnimated:YES]; return YES;//返回NO 不会执行 }

重写系统中的UINavigationController返回按钮的事件相关推荐

  1. Ionic2 下处理 Android 设备下返回按钮的事件

    原文发表于我的技术博客 本文分享了 Ionic2 下处理 Android 设备下返回按钮的事件,供参考. 原文发表于我的技术博客 代码中我分享了如何捕捉 Ionic2 项目在 Android 设备下返 ...

  2. JSP页面中四种“返回按钮”的使用

    列举4种实现返回按钮的形式,返回按钮出现在form表单中: <html:form method="post" action="mypath/action1.do?m ...

  3. 小程序监听android返回键,微信小程序左上角返回按钮触发事件

    从A页面跳转到B页面,再从B页面通过左上角返回按钮,返回到A页面 A页面: B页面: 从B页面返回到A页面时,触发事件请求接口: 代码如下: B页面js代码 onShow: function () { ...

  4. 微信小程序左上角返回按钮触发事件

    从A页面跳转到B页面,再从B页面通过左上角返回按钮,返回到A页面 A页面: B页面: 从B页面返回到A页面时,触发事件请求接口: 代码如下: B页面js代码 onShow: function () { ...

  5. C#如何在一个按钮事件中调用另一个按钮的事件代码

    private void button1_click(object sender, EventArgs e) { Button2_Click(this, e); } private void Butt ...

  6. 改变iOS系统自带返回按钮事件

    最近要用到  用 系统自带的带箭头的返回按钮 返回到指定的ViewController 或者返回到RootViewController, 自定义NaviBarItem也可以 但是想用系统的箭头,就偶然 ...

  7. Swift中隐藏某一页面的返回按钮

    最近在尝试用swift去编写一个小项目,由于用惯了oc,一时间无法适应.最基本的隐藏导航返回按钮都无法实现,在网上搜索半天,没有找到合适的方法,可能是我词不达意吧.最后终于在一篇文章中找到了解决方案. ...

  8. uniapp微信小程序左上角返回按钮的监听

    项目场景: uni-app 开发微信小程序,界面中点击左上角的返回按钮或者是系统自带的虚拟返回操作,返回前监听用户是否在页面内进行了相应操作,如果有则进行提示(提示用户是否确定要返回),如果没有则直接 ...

  9. Swift自定义导航栏返回按钮

    如何去除swift系统自带的导航栏返回按钮?可以自定义返回按钮 在swift中,怎么替换系统自带的导航栏返回按钮?比如说我要替换成一张返回按钮图片,点击返回到上一页 首先,看一下系统自带的导航栏返回按 ...

最新文章

  1. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
  2. mysql 加快复制进程_MySQL并发复制进程演进
  3. 分析Android :java.lang.UnsatisfiedLinkError: dlopen failed * is 32-bit instead of 64-bit
  4. ##自定义一个自动注入Log 的 插件
  5. Linux之Redis的启动、使用和停止
  6. winform技巧一,errorprovider,任务栏可见,总在最前
  7. 主题:的中间层框架 第一节
  8. Java语言Socket接口用法详解
  9. 计算机视觉论文-2021-07-16
  10. python sublime 提示补全_【原创】Sublime+Verilator建立强大的verilog编写环境
  11. 2022年的第一个工作日,整理了风控的这些内容
  12. PuTTY/PSCP、PSFTP介绍及使用
  13. qq空间显示手机型号android,qq说说显示手机型号 qq说说显示手机型号在哪里设置...
  14. 室内设计数据手册pdf_室内设计制图讲座 PDF扫描版[25MB]
  15. 批量文件传输工具推荐
  16. Docker 使用手册
  17. 什么是微信分销商城?
  18. CAD中角度如何平分、CAD特性匹配的作用是什么?
  19. 好用的chrome插件:鼠标手势、阅读视图、onetab
  20. Fiddler数据抓包试玩改包工具使用畅享

热门文章

  1. java命令可以但是javac命令找不到
  2. RocketMQ-控制台的安装与启动
  3. MarkDown 公式书写
  4. 【Python】编程笔记9
  5. Flutter:如何使用 CustomPaint 绘制心形
  6. jpg 神经网络 手势识别_在STM32上跑神经网络做手势识别
  7. python语言流程控制语句的格式_Python流程控制语句的深入讲解
  8. dac0832产生梯形波程序C语言,在8086系统中用DAC0832输出一个三角波,一个梯形波,和一个正弦波。...
  9. 深度洞见|从起源到应用,一文详解营销界爆火的 CDP
  10. 免费下载 |《数字广告投放中虚假流量的排查与判定》白皮书重磅发布