判断用户的登录状态,弹出alertView来进行登录操作

判断用户的登录状态


本文章来自于自己的项目 出现某些接口的请求必须登录才能进行,操作比较繁琐。所以想结束于某些类进行单独处理 。
由于项目中有相关的用户单利存在 ,就放到其中处理也是一个不错的额选择。代码比较简陋,勿怪。
.h 文件
-(BOOL)inspectLogin;

.m文件 
#import "UserService.h"

#import "LoginAndRegisterViewController.h"
#import "AppDelegate.h"
static UserService *user;
@interface UserService () <UIActionSheetDelegate,UIAlertViewDelegate>{

    UIAlertView *alertView;
}
//@property (nonatomic, strong) UIAlertView *alertView;
@end

@implementation UserService
//单利部分省略
-(BOOL)inspectLogin
{
    if ([UserService sharedUserService].uid == nil ) {

        alertView = [[UIAlertView alloc] initWithTitle:LocalizedString(pleaseWait) message:LocalizedString(unloginDDZ) delegate:self cancelButtonTitle:LocalizedString(cancelDDZ) otherButtonTitles:LocalizedString(sureDDZ), nil];
        [UIView appearance].tintColor = RGBThemColor;
        alertView.delegate = self;
        [alertView show];
#warning  检验得出  这是对象方法(instance Method),不能放到类方法中(class method)
        return NO;
    }
    return YES;
}

#pragma  mark alertView  代理方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    
    LoginAndRegisterViewController * loginView = [[LoginAndRegisterViewController alloc] init];

    if (buttonIndex==1) {

//        [appDelegate.window presentViewController:_callController animated:YES completion:nil];
//        [self. showViewController:loginView sender:nil];
        
        //    觉得不应该暴露出来的 但其实说没有区别的
        // AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
        //    UITabBarController *tabVC = appDelegate.tabbarVC ;
        //    觉得不应该暴露出来的 但其实说没有区别的,此处就能获得当前的tabbar,不过得说明一下:APPDelegate的rootViewController是DZTabbarViewController(UITabBarController的子类)


        NSArray *widows = [UIApplication sharedApplication].windows;
        for (UIWindow  *window in widows) {
            
            if ([window.rootViewController isKindOfClass:NSClassFromString(@"DZTabbarViewController")]) {
                
                //           Class cla = NSClassFromString(@"DZTabbarViewController");
                UITabBarController *tabVC =  window.rootViewController;
                UIViewController *vc = tabVC.selectedViewController;
                [tabVC.selectedViewController pushViewController:loginView animated:YES
                 ];
            }
        }
        
    }
}

@end
/*
 
 使用  在任何 需要处理用户的登录的情况就直接使用 如下语句即可 (必须引入相关的头文件才可以 ,我是放在prefix文件中的)
 if (![[UserService sharedUserService] inspectLogin]) {
 return;
 }
 不过还是有待提升的地方:
 现在先做一个讨论:
 1.在网络请求的接口进行 用户的登录就直接进行登录的处理,这样的话就可以省掉很多的麻烦。不过也必须得进行特殊的 处理,不然的话注册怎么办,而且这种操作更适用于必须进行登录操作需求的项目。
 2.在其他的情况(排处登录的这样的重复度较高的情况),不知道有没有好的处理方案。如果也非得集成在一起的话,恐怕这个单例类的负担也会上升,判断也会增多,只单独处理登录这一个操作会比较简介轻松。
 3.不过就是用来说已经很方便了,毕竟用户的登录情况需要我们来控制,而不是必须登录。
 4.还要说明的alertview已经被放弃治疗了改用UIAlertController 同时替代了 UIAlertView 和 UIActionSheet,从系统层级上统一了 alert 的概念 —— 即以 modal 方式或 popover 方式展示。


 */




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值