TabbarItem 点击需登陆需求

先说一下我的项目框架,tabbarcontroller控制4个导航控制器,4个导航控制器分别控制四个根视图,在这种前提下 ,我们的项目中很容易出现(我的)tabbaritem,点击需要登录才能进去,点击的时候需要判断需不需要登录,没有登录的情况下,肯定需要登录的,然后push出来登录界面,既然是push出来的界面点击左上角返回的时候最多只能返回到(我的界面),那么问题就来了 ,总不能一直在这里循环着不让用户去看其他页面吧,后来发现tabbarcontroller有代理方法

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
   
 
    //这里我判断的是当前点击的tabBarItem的标题
    if ([viewController.tabBarItem.title isEqualToString:@"我的"]) {
        //如果用户ID存在的话,说明已登陆
        if (是否登录的 判断) {
                        //跳到登录页面
                        LoginViewController *login = [[LoginViewController alloc] init];
                        //隐藏tabbar
            //            login.hidesBottomBarWhenPushed = YES;
                        [((UINavigationController *)tabBarController.selectedViewController) pushViewController:login animated:YES];
                        
                        return NO;
        }else{
          
            return YES;
        }
        
    }
    else
        return YES;
    
}

通过上面的方法完美解决了点击(我的)需要登录的问题,然后问题又来了,我的里面有设置按钮,在设置里面点击退出登录,用户又回到登录界面了,但是这个登录时(我的)界面push出来了,所以在点击左上角返回的时候又会出现问题,所以就在loginController里面的左上角返回按钮方法里添加

- (void)popToHome{
    
    [self.tabBarController setSelectedIndex:0];
    [self.navigationController popViewControllerAnimated:NO];
}

这样点击返回的时候就可以返回首页,而且你在其它页面登录的时候,再回到(我的)界面就不会弹出需要登录界面的情况

多一点细心,多一点记录,多一点成功

你可能感兴趣的:(TabbarItem 点击需登陆需求)