当前位置:编程学习 > wap >>

处理弹出很多提示框

如果我们有一个界面有很多请求,但这时候所有的请求都无效,这是我们可能会提示用户 “请求失败”,“请求超时“等等,
如果提示一次那当然很好,但是每一个失败的请求都触发一次提示框来提示用户,这样会很糟糕。
可能一次弹出很多提示框,我们点击一次然后又弹出另一个,并且这些提示信息还是一样的,这样会让用户很恼火的。
 
假设某家公司有两个不同的数据库A 和B,但是A是内网的,B是现网的,我们在A中注册下,然后把信息保存,这时候我们修改地址指向B,可能会出现问题。
如果我们访问了需要提供access token 的资源,我们需要提供access token ,但是这个access token 在A中是有效的,在B中是无效的。
所以服务端可能会返回 “无效的access token”等。
可是我们已经登陆了啊,咋办呢?
我们可以根据具体的情况,重新弹出登陆界面,当然这只是一个例子,我们可以用这样的方法处理其他类似的情况。
 
1  用dispatch once
这个不说了
2  用工厂类方法
#import <UIKit/UIKit.h>
@inte易做图ce PresentLogInVC : UIViewController
+(void)appearLogInVC;
@end
 
#import "PresentLogInVC.h"
 
static UINavigationController *_navController;
static PresentLogInVC *_viewController;
@inte易做图ce PresentLogInVC ()
{
 
}
@end
 
@implementation PresentLogInVC
+(void)appearLogInVC
{
    if (!_navController)
    {
        _viewController=[[self alloc]init];
        _navController=[[UINavigationController alloc]initWithRootViewController:_viewController];
        [_viewController show];
    }
    else
    {
        NSLog(@"have appeared !!!");
    }
}
 
-(void)show
{
    UIWindow *window=[[[UIApplication sharedApplication] windows] objectAtIndex:0];
    [window addSubview: _navController.view];
    __block CGRect r=[[UIScreen mainScreen]bounds];
    r.origin.y=r.size.height;
    [_navController.view setFrame:r];
    [UIView animateWithDuration:0.3 animations:^{
        r.origin.y=0; www.zzzyk.com
        [_navController.view setFrame:r];
    }];
}
-(void)dismiss
{
    [UIView animateWithDuration:0.3 animations:^{
        CGRect r=[[UIScreen mainScreen]bounds];
        r.origin.y=r.size.height;
        [_navController.view setFrame:r];
    } completion:^(BOOL b){
        [_navController.view removeFromSuperview];
    }];
}
 
-(void)viewDidLoad
{
    [super viewDidLoad];
   
    self.title=@"登陆";
    
    UIBarButtonItem * leftItem = [[UIBarButtonItem alloc] initWithTitle:@"dismiss" style:UIBarButtonItemStyleDone target:self action:@selector(dismiss)];
    [self.navigationItem setLeftBarButtonItem:leftItem];
    
    self.view.backgroundColor=[UIColor grayColor];
}
-(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    
    [_navController release];
    _navController=nil;
    [_viewController release];
    _viewController =nil;
}
@end
 
补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,