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];
}

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,018评论 25 708
  • “诗人不死,只是逐渐变身成广告人。” 01 或许是习惯写日记,所以自恋; 或许是从小喜欢读诗词,所以字恋; 因为自...
    白格姨妈阅读 409评论 2 1
  • 这是一个流行离开的世界,只是我们都不擅长告别。 以前因为年少固执尚且不懂得,只是单凭心情随意而为,错过了一些情,也...
    不倾城阅读 473评论 0 1