判断是否登录页面跳转

问题:今天在项目中遇到这样一个需求,tabBar上有首页,商家,购物车,个人中心四个模块,当点击商家和购物车时要判断用户是否已经登录,如果没有就要跳转到登录界面,登录成功后回到指定的控制器,就拿购物车来说,登录成功后自动跳到购物车界面去

思路:在AppDelegate里面设置tabBarController的代理为self,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加监听事件,登录成功发送通知,通知信息里面传递tabBar的selectIndex值,至于如何传递这个值有很多方法。然后实现- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController方法,跳转到登录控制器,登录完成自动跳回

以下是AppDelegate核心代码:


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(logSelect:) name:LoginSuccessNotification object:nil];//接收成功的通知
    }

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    //这里我判断的是当前点击的tabBarItem的标题
    if ([viewController.tabBarItem.title isEqualToString:@"购物车"])
    {
        //我的登录状态存放在本地
        if ([[[NSUserDefaults standardUserDefaults] objectForKey:LoginStatu] isEqualToString:successLogin]) {
            return YES;
        }
        else//未登录
        {
            //跳到登录页面,这里我是用单利来存储tabbar的selectIndex的,个人习惯
            LoginViewController *login = [[LoginViewController alloc] init];
            [MKJRequestHelper shareRequestHelper].selectIndex = @"2";
            login.hidesBottomBarWhenPushed = YES;
            [((UINavigationController *)tabBarController.selectedViewController) pushViewController:login animated:YES];
            return NO;
        }
    }

    //如果是商家
    else if([viewController.tabBarItem.title isEqualToString:@"商家"])
     {
            if ([[[NSUserDefaults standardUserDefaults] objectForKey:LoginStatu] isEqualToString:successLogin])
         {
            return YES;
         }
        else
        {
            //跳到登录页面
            LoginViewController *login = [[LoginViewController alloc] init];
             [MKJRequestHelper shareRequestHelper].selectIndex = @"1";
            login.hidesBottomBarWhenPushed = YES;
            [((UINavigationController *)tabBarController.selectedViewController) pushViewController:login animated:YES];
            return NO;
        }
    
    }
    return YES;
}


//登录成功接受到的方法,让tabBarConroller直接跳转到你想跳的界面中去
- (void)logSelect:(NSNotification *)text{
    
   _tabBarVC.selectedIndex = [text.userInfo[@"index"]integerValue];
    
}

登录控制器的代码就只有发送通知就可以了,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,517评论 4 61
  • 我是历时千年的古物 我好奇我什么时候才能重归故土 我听见短兵击鼓,妇孺啼哭 我看见士兵被黥首,战旗被凌辱 我愿融为...
    我是泛彼柏舟阅读 286评论 0 1
  • 图/网络 小时候看古装宫廷剧,经常感觉到后背发凉。很多人都因为说话不当就没了命。比如不经意透露了自己不该知道却已经...
    夏至星辉阅读 879评论 0 2
  • UIAlertController 是iOS8 之后推出的!实际使用中我们遇到连个AlertAction 颜色不一...
    linzaifei阅读 3,578评论 0 1
  • 你出现以后, 我比以前更快乐, 也比以前更难过。 太爱一个人,会时常做一些连自己都觉得幼稚的事情吧。 比如我的朋友...
    蒜泥儿白肉阅读 535评论 2 3

友情链接更多精彩内容