页面跳转问题,多次 push 到新的页面的问题的解决方法

今日在做一个扫一扫的功能,突然发现多次点击了扫一扫的图片后,造成多次触发轻拍手势,就多次push到新的页面,本想在轻拍手势内对push的进行拦截,但是又觉得如果有好多的地方都要实现对该问题的解决岂不是很麻烦吗?于是想了一下,我们可以通过重写导航控制器的方法来解决这个问题。

下面就是我写好的方法,你可以直接引入到你的工程中,就能够解决类似的问题。

(1)、首先在程序的一个导航控制器类(就是程序中的所有导航控制器的父类名字一般都是:XXXBaseNavgationController )的延展中去遵循代理:UINavigationControllerDelegate;在延展中编写一个属性

//记录 push 的标记,用于:从源头上解决,页面的多 push 问题

@property (nonatomic,getter=isPushing) BOOL pushing;

(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 方法,更加优越。

时间: 2024-10-15 22:21:19

页面跳转问题,多次 push 到新的页面的问题的解决方法的相关文章

页面报错误:HTTP Status 500 - Method "execute" failed for object [email protected]解决方法?

16:21:07,308 ERROR DefaultDispatcherErrorHandler:42 - Exception occurred during processing request: Method "execute" failed for object [email protected] ognl.MethodFailedException: Method "execute" failed for object [email protected] [

ios&h5混合开发项目仿app页面跳转优化

前言:本人原本是ios开发工程师,但由于现今H5的兴起,行内刮起了一阵混合开发的风气,趁着这股劲,我也学了前端开发,不说研究的多深,但也能胜任日常的开发工作.长话短说,现今的混合开发应该还处于摸索阶段,我们的项目主要页面都是由网页做的,只有一些IM.支付.分享.推送.上传照片这些用的是原生功能,大家都知道ios原生app的体验一直是很好的,现在改成了混合开发,无疑中就有些舍弃了ios原生的用户体验,而这个作为一个向来以用户体验为先的开发人员来说,这个真的是难以忍受,所以开始了以优化用户体验的为目

安卓之页面跳转与传值和按钮事件

一:新建页面 即新建Activity,new-other-Android Activity,next, 新建Activity的时候, 1:eclipse会自动创建Layout,我们发现Layout目录下会多了对应的xml文件: 2:ec会自动在AndroidManifest.xml中创建对应的activity节点: 需要注意的是,这些都是ec帮我们自动创建的,我们完全可以手动创建 class,然后让它继承自activity,然后指定layout的那个xml,然后手动创建节点完成. 二:点击按钮进

安卓---页面跳转---及页面传值

要实现从1个activity跳到另一个activity,这需要通过intent来实现.当然我们需要在Button按钮上绑定一个按钮按下的监听器,一旦该按钮监听到有按键按下,则通过intent将指定的第2个 activity触发,这样就完成了页面跳转的基本功能. 在工程中,每一个activity都对应一个xml文件,xml文件主要是控制各控件的位置和属性的. 1.先创建xml文件 activity_main.xml 1 <RelativeLayout xmlns:android="http:

js实现页面跳转,纯html实现网页定时跳转

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <title>登陆页面</title>

关于页面跳转,登录刷新

javascript中的location.href有很多种用法,主要如下. self.location.href="/url" 当前页面打开URL页面 location.href="/url" 当前页面打开URL页面 windows.location.href="/url" 当前页面打开URL页面,前面三个用法相同. this.location.href="/url" 当前页面打开URL页面 parent.location.h

ThinkPHP页面跳转、Ajax技巧详细介绍(十八)

原文:ThinkPHP页面跳转.Ajax技巧详细介绍(十八) ThinkPHP页面跳转.Ajax技巧详细介绍 一.页面跳转 $this->success('查询成功',U('User/test')); ├─//跳当前模块方法下: ├─ $this->success('查询成功','test'); └─//跳到 指定跳转模块方法下 this->success('查询成功',U('User/test')); $this->error('查询失败,3秒后跳会之前的页面/上一页'); //

js页面跳转的问题(跳转到父页面、最外层页面、本页面)

js页面跳转:本页面跳转,上一层页面跳转,最外层的页面跳转,下面为大家大家分享下不同页面之家的跳转问题,感兴趣的朋友可以学习下 "window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一层页面跳转 "top.location.href"是最外层的页面跳转 举例说明: 如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A

怎样实现页面跳转和刷新

javascript中的location.href有很多种用法,主要如下. self.location.href="/url" 当前页面打开URL页面location.href="/url" 当前页面打开URL页面windows.location.href="/url" 当前页面打开URL页面,前面三个用法相同.this.location.href="/url" 当前页面打开URL页面parent.location.href=