重写系统中的UINavigationController返回按钮的事件
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返回按钮的事件相关推荐
- Ionic2 下处理 Android 设备下返回按钮的事件
原文发表于我的技术博客 本文分享了 Ionic2 下处理 Android 设备下返回按钮的事件,供参考. 原文发表于我的技术博客 代码中我分享了如何捕捉 Ionic2 项目在 Android 设备下返 ...
- JSP页面中四种“返回按钮”的使用
列举4种实现返回按钮的形式,返回按钮出现在form表单中: <html:form method="post" action="mypath/action1.do?m ...
- 小程序监听android返回键,微信小程序左上角返回按钮触发事件
从A页面跳转到B页面,再从B页面通过左上角返回按钮,返回到A页面 A页面: B页面: 从B页面返回到A页面时,触发事件请求接口: 代码如下: B页面js代码 onShow: function () { ...
- 微信小程序左上角返回按钮触发事件
从A页面跳转到B页面,再从B页面通过左上角返回按钮,返回到A页面 A页面: B页面: 从B页面返回到A页面时,触发事件请求接口: 代码如下: B页面js代码 onShow: function () { ...
- C#如何在一个按钮事件中调用另一个按钮的事件代码
private void button1_click(object sender, EventArgs e) { Button2_Click(this, e); } private void Butt ...
- 改变iOS系统自带返回按钮事件
最近要用到 用 系统自带的带箭头的返回按钮 返回到指定的ViewController 或者返回到RootViewController, 自定义NaviBarItem也可以 但是想用系统的箭头,就偶然 ...
- Swift中隐藏某一页面的返回按钮
最近在尝试用swift去编写一个小项目,由于用惯了oc,一时间无法适应.最基本的隐藏导航返回按钮都无法实现,在网上搜索半天,没有找到合适的方法,可能是我词不达意吧.最后终于在一篇文章中找到了解决方案. ...
- uniapp微信小程序左上角返回按钮的监听
项目场景: uni-app 开发微信小程序,界面中点击左上角的返回按钮或者是系统自带的虚拟返回操作,返回前监听用户是否在页面内进行了相应操作,如果有则进行提示(提示用户是否确定要返回),如果没有则直接 ...
- Swift自定义导航栏返回按钮
如何去除swift系统自带的导航栏返回按钮?可以自定义返回按钮 在swift中,怎么替换系统自带的导航栏返回按钮?比如说我要替换成一张返回按钮图片,点击返回到上一页 首先,看一下系统自带的导航栏返回按 ...
最新文章
- 《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
- mysql 加快复制进程_MySQL并发复制进程演进
- 分析Android :java.lang.UnsatisfiedLinkError: dlopen failed * is 32-bit instead of 64-bit
- ##自定义一个自动注入Log 的 插件
- Linux之Redis的启动、使用和停止
- winform技巧一,errorprovider,任务栏可见,总在最前
- 主题:的中间层框架 第一节
- Java语言Socket接口用法详解
- 计算机视觉论文-2021-07-16
- python sublime 提示补全_【原创】Sublime+Verilator建立强大的verilog编写环境
- 2022年的第一个工作日,整理了风控的这些内容
- PuTTY/PSCP、PSFTP介绍及使用
- qq空间显示手机型号android,qq说说显示手机型号 qq说说显示手机型号在哪里设置...
- 室内设计数据手册pdf_室内设计制图讲座 PDF扫描版[25MB]
- 批量文件传输工具推荐
- Docker 使用手册
- 什么是微信分销商城?
- CAD中角度如何平分、CAD特性匹配的作用是什么?
- 好用的chrome插件:鼠标手势、阅读视图、onetab
- Fiddler数据抓包试玩改包工具使用畅享
热门文章
- java命令可以但是javac命令找不到
- RocketMQ-控制台的安装与启动
- MarkDown 公式书写
- 【Python】编程笔记9
- Flutter:如何使用 CustomPaint 绘制心形
- jpg 神经网络 手势识别_在STM32上跑神经网络做手势识别
- python语言流程控制语句的格式_Python流程控制语句的深入讲解
- dac0832产生梯形波程序C语言,在8086系统中用DAC0832输出一个三角波,一个梯形波,和一个正弦波。...
- 深度洞见|从起源到应用,一文详解营销界爆火的 CDP
- 免费下载 |《数字广告投放中虚假流量的排查与判定》白皮书重磅发布