IOS TabBarController中判断是否应该跳转到登录界面

开发过程中在TabBarController中很多时候有一些登录之后才可以的操作

这个时候需要在AppDelegate中判断是否登录,试过2种方法:

第一种:

  1. 设置UITabBarController的代理为appdelegate如下:tabBar.delegate = self;
  2. 然后在interface后面写上代理<UITabBarControllerDelegate>
  3. 实现代理里面的- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController方法
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    NSLog(@"--tabbaritem.title--%@",viewController.tabBarItem.title);
     
    //这里我判断的是当前点击的tabBarItem的标题
    if ([viewController.tabBarItem.title isEqualToString:@"我的"]) {
        //如果用户ID存在的话,说明已登陆
        if (USER_ID) {
            return YES;
        }
        else
        {
            //跳到登录页面
            LoginViewController *login = [[LoginViewController alloc] init];
            //隐藏tabbar
            login.hidesBottomBarWhenPushed = YES;
            [((UINavigationController *)tabBarController.selectedViewController) pushViewController:login animated:YES];
             
            return NO;
        }
    }
    else
        return YES;
}

这种方法在进入tabBarController中跳转时没有问题,但是跳转到LoginViewController中取消登录,返回到tabBarController中这个方法就不执行了。

第二种:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    
    if ([window.rootViewController isKindOfClass:NSClassFromString(@"CYXTabBarController")]) {
        
        UITabBarController * tabVC = (UITabBarController *)window.rootViewController;
        
        if (tabVC.selectedIndex == 3) {
            if (USER_ID) {
                //跳到登录页面
                UIStoryboard *loginSB = [UIStoryboard storyboardWithName:@"LoginViewController" bundle:nil];
                LoginViewController *loginVC = [loginSB instantiateInitialViewController];
                self.window.rootViewController = loginVC;
            }
            return UIInterfaceOrientationMaskPortrait;//返回可以设置是否允许屏幕旋转(这里是不允许)
        }
    }
            
    return UIInterfaceOrientationMaskPortrait;
            
}

第二种方法可以完美解决问题! 关注新平台:http://www.toutiao.com/m51416718261/

关注订阅号:从小就坏

转载于:https://my.oschina.net/u/1189098/blog/784286

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值