文档章节

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

高效码农
 高效码农
发布于 2016/11/09 09:09
字数 318
阅读 66
收藏 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
博文 15
码字总数 16162
作品 0
石家庄
程序员
UITabBarController详解

 广州APP开发,微信开发,广州英趣信息科技开发部博客:当我们想要做一个界面类似 联系人 那样的程序时,就一定会用到 UITabBar,它可以帮我们添加、管理许多的Tab项, 使我们的程序包含不同...

广州英趣科技
2013/09/08
0
2
构建你的Office 365开发环境 - IOS版

博客地址:http://blog.csdn.net/FoxDave 本文主要介绍在开始创建应用之前,如何构建你的Office 365开发环境去调用Office 365 API。 构建Office 365开发环境包含了三个一次性的工作: 下载开...

justinliu927
04/16
0
0
React Navigation

https://reactnavigation.org/docs/intro/nesting 官网 http://blog.csdn.net/u013718120/article/details/72357698 http://www.jianshu.com/p/2f575cc35780 这里只是基本用法,高级详情用法......

Chason-洪
2017/11/15
0
0
IOS开发—无需自定义,修改tabbar背景颜色

最近修改的项目都是基于IOS 5.0或以上的版本的,在IOS 6一下的版本中,系统默认的tabbar是黑色的,但是此项目需要改成兼容IOS 7和IOS 8的,大家都知道IOS 7开始,IOS的 UI 进入了扁平的时代,...

TomatosX
2015/03/18
0
1
完美结局iPhoneX自定义tabBar重影问题

对于iOS开发者来说,底部的tabBar通常都是需要自定义,因为系统自带的或多或少和我们要求的总有一点的出入。 在自定义tabBar后,通常做法就是移除系统的tabBar来防止出现重影的问题。 在iPh...

会飞的海豚哦
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ在CentOS环境安装

1.废话不多说准备一台虚拟机,系统为centos,我这里使用的系统版本如下图所示:

凌晨一点
45分钟前
0
0
线程池相关

在java.util.concurrent包下,提供了一系列与线程池相关的类。 使用线程池的好处 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗; 提高响应速度。当任务到达时,任务...

edwardGe
47分钟前
0
0
学习大数据这三个关键技术是一定要掌握!

大数据时代全面来临,大数据、人工智能等技术引领科技创新潮流,获得国家政策大力支持,前景广阔。学习大数据技术的人自然是络绎不绝, 学习大数据虽然是一个趋势,但也要注意大数据培训课程...

董黎明
今天
0
0
jetbrains 上传代码到github

设置中找github 获取token 验证是否成功 测试git 生成key,一路回车即可 ssh-keygen -t rsa -C “youremail@example.com” 打开pub复制key,需要再次输入一次密码 验证是否成功,输入yes即可...

阿豪boy
今天
0
0
分布式服务框架(拾遗)

前言 现在的大部分工程都已经是基于分布式架构来处理。所以这里对分布式框架做一个简单的总结 常用的RPC框架 RPC框架原理 RPC(Remote Procedure Call,远程过程调用)一般用来实现部署在不同...

kukudeku
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部