处理弹出很多提示框

如果我们有一个界面有很多请求,但这时候所有的请求都无效,这是我们可能会提示用户 “请求失败”,“请求超时“等等,

如果提示一次那当然很好,但是每一个失败的请求都触发一次提示框来提示用户,这样会很糟糕。

可能一次弹出很多提示框,我们点击一次然后又弹出另一个,并且这些提示信息还是一样的,这样会让用户很恼火的。


假设某家公司有两个不同的数据库A 和B,但是A是内网的,B是现网的,我们在A中注册下,然后把信息保存,这时候我们修改地址指向B,可能会出现问题。

如果我们访问了需要提供access token 的资源,我们需要提供access token ,但是这个access token 在A中是有效的,在B中是无效的。

所以服务端可能会返回 “无效的access token”等。

可是我们已经登陆了啊,咋办呢?

我们可以根据具体的情况,重新弹出登陆界面,当然这只是一个例子,我们可以用这样的方法处理其他类似的情况。


1 用dispatch once

这个不说了

2 用工厂类方法

#import <UIKit/UIKit.h>
@interface PresentLogInVC : UIViewController

+(void)appearLogInVC;
@end


#import "PresentLogInVC.h"

static UINavigationController *_navController;
static PresentLogInVC *_viewController;
@interface 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;
[_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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值