文档章节

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

高效码农
 高效码农
发布于 2016/11/09 09:09
字数 318
阅读 80
收藏 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/

关注订阅号:从小就坏

© 著作权归作者所有

共有 人打赏支持
高效码农
粉丝 19
博文 18
码字总数 17317
作品 0
石家庄
程序员
私信 提问
UITabBarController详解

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

广州英趣科技
2013/09/08
0
2
iOS与JS交互之WKWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「WKWebView与JS交互」「WKWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
2018/09/01
0
0
构建你的Office 365开发环境 - IOS版

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

justinliu927
2018/04/16
0
0
iOS WKWebView H5微信支付跳转

iOS WKWebView H5微信支付跳转 需求:iOS客户端实现嵌入H5进行微信支付跳转到微信客户端,支付完成后再跳转回我们的APP,解决WKWebView无法跳转回APP的BUG. 阅读前提: warning Note : The st...

__小___东邪___
2018/11/06
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

没有更多内容

加载失败,请刷新页面

加载更多

查询改写参数配置

参数配置有哪些选项:

Java搬砖工程师
16分钟前
1
0
elasticsearch知识点

elasticsearch基础知识: 基础知识: 1 集群: 主节点不涉及文档级别的变更或搜索 只负责索引的变更 删除 和 集群节点的加入和删除 技术上来说,一个主分片最大能够存储 Integer.MAX_VALUE - 12...

geek土拨鼠
19分钟前
1
0
ECS(Entity-Component-System)

ECS是一种思想 TODO

梦想游戏人
20分钟前
1
0
Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(一)

下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 与...

电池盒
21分钟前
4
0
docker 新手向 - 防止容器自动退出的解决方案

本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容器可以常驻运行。 docker 容器的生命周期是同容器中的前置进程相关在一起的,这也是...

big_cat
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部