最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

如何解决IOS UIViewController界面重复打开多次的问题

IOS 太平洋学习网 浏览 评论

在ios开发中使用pushViewController方法打开UIViewController界面的时候,我们由于点击跳转按钮速度比较快,可能会出现UIViewController界面重复打开问题,那么我们该如何解决ios UIViewController界面重复跳转问题呢?

首先我们要了解的是pushViewController方法是UINavigationController类里面的方法,要想防止界面的重复跳转,需要新建一个UINavigationController类的category分类,如图所示:

QQ20180908-125732.png

然后在UINavigationController+NoRepeat.h文件中定义一个UINavigationController类的扩展方法,代码如下:

#import <UIKit/UIKit.h>

@interface UINavigationController (NoRepeat)

//是否允许重复的方法定义
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated noRepeatOpen:(BOOL)flag;

@end

在UINavigationController+NoRepeat.m中实现上面定义的方法,用于跳转到指定界面,代码如下:

#import "UINavigationController+NoRepeat.h"

@implementation UINavigationController (NoRepeat)

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated noRepeatOpen:(BOOL)flag
{
    //判断该类是否已经打开, 
    if ([[self.viewControllers lastObject] isKindOfClass:viewController.class] && flag) {
        return;
    }
    //隐藏下方tab,可忽略
    if (self.viewControllers.count) {
        viewController.hidesBottomBarWhenPushed = YES;
    }
    //跳转
    [self pushViewController:viewController animated:animated];
}

@end

那么该如何使用我们的UINavigationController扩展类呢?只需要在对应的界面引入“#import "UINavigationController+NoRepeat.h"”头文件,然后使用如下方法即可:

//“orderQueryVC”是目标controller界面,"YES"表示不允许重复打开
[self.navigationController pushViewController:orderQueryVC animated:YES noRepeatOpen:YES];

按照上方代码,你就可以轻松解决UIViewController界面重复打开问题了。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/object-c_ios/755.html

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论