页面跳转问题,多次 push 到新的页面的问题的解决方法
2016-07-08 11:20
369 查看
今日在做一个扫一扫的功能,突然发现多次点击了扫一扫的图片后,造成多次触发轻拍手势,就多次push到新的页面,本想在轻拍手势内对push的进行拦截,但是又觉得如果有好多的地方都要实现对该问题的解决岂不是很麻烦吗?于是想了一下,我们可以通过重写导航控制器的方法来解决这个问题。
下面就是我写好的方法,你可以直接引入到你的工程中,就能够解决类似的问题。
(1)、首先在程序的一个导航控制器类(就是程序中的所有导航控制器的父类名字一般都是:XXXBaseNavgationController )的延展中去遵循代理:UINavigationControllerDelegate; 在延展中编写一个属性
@property (nonatomic,getter=isPushing) BOOL pushing; // 记录 push 的标记,用于:从源头上解决,页面的多 push 问题
(2)、然后在 viewDidLoad 方法中设置代理。
(3)、在用于 push 的方法里重写父类的方法,代码如下:
(4)、实现导航控制器的代理方法,代码如下:
OK,到这里就从根源上实现了所有页面, 在 push 的时候,由于手快导致的 多次 push 的问题,优化了性能,相比从按钮的点击事件处拦截 push 方法,更加优越。
下面就是我写好的方法,你可以直接引入到你的工程中,就能够解决类似的问题。
(1)、首先在程序的一个导航控制器类(就是程序中的所有导航控制器的父类名字一般都是:XXXBaseNavgationController )的延展中去遵循代理:UINavigationControllerDelegate; 在延展中编写一个属性
@property (nonatomic,getter=isPushing) BOOL pushing; // 记录 push 的标记,用于:从源头上解决,页面的多 push 问题
(2)、然后在 viewDidLoad 方法中设置代理。
(3)、在用于 push 的方法里重写父类的方法,代码如下:
// 重写父类方法 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { //~下面代码是解决页面的多次 push 使用~ if (self.pushing == YES) { NSLog(@"被拦截"); return; }else{ NSLog(@"被push"); self.pushing = YES; }
(4)、实现导航控制器的代理方法,代码如下:
//导航控制器的代理方法的实现(为了解决页面 的多次 push 的问题) -(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ self.pushing = NO; }
OK,到这里就从根源上实现了所有页面, 在 push 的时候,由于手快导致的 多次 push 的问题,优化了性能,相比从按钮的点击事件处拦截 push 方法,更加优越。
相关文章推荐
- Android Material Design之Toolbar与Palette实践
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区
- HTML5学习心得总结(推荐)
- python学习13-搜索和排序
- Redis
- Codeforces Round #357 (Div. 2) A Good Contest(水题)
- Qt之MVC使用
- ViewTreeObserver简介
- 国内投资者投资港股的四种方法和港股必知25件事
- @value注解使用的简单介绍 ---谷营中西
- SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems
- 特别实用而且功能强大的attributedText属性
- 微信红包(腾讯2016研发工程师编程题)
- 操作系统的三个抽象概念
- Python Tutorial 学习笔记3 -- Python Data Structures
- OpenGL(三)图形变换之几何变换
- 航天金税金税盘批量导入项目开发
- LeetCode101 Symmetric Tree
- mysql中中文乱码问题
- jdbc操作数据库