IOS TabBarController中判断是否应该跳转到登录界面
IOS TabBarController中判断是否应该跳转到登录界面
高效码农 发表于2年前
IOS TabBarController中判断是否应该跳转到登录界面
  • 发表于 2年前
  • 阅读 52
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

开发过程中在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/

关注订阅号:从小就坏

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 18
博文 14
码字总数 16162
×
高效码农
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: