博客> 点击tabbar的某个item时在用户未登录时直接跳转到登录界面
点击tabbar的某个item时在用户未登录时直接跳转到登录界面
2017-09-22 10:03 评论:0 阅读:84 飞翔信念
ios 登录 tabbar

一般我们都是在appdelegate里面创建tabbarcontroller,需求:底部有四个tabbar的item,分别是:首页ViewController、大厅DaTingViewController、圈子QuanViewController、我的MineViewController,在点击圈子和我的的时候要直接跳转到登录界面,首页和大厅不需登录。实现:

1.实现tabbarcontrol的代理delegate;

2.在tabbarcontroller的代理方法里实现
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    UINavigationController * nav=(UINavigationController *)viewController;

//    NSLog(@"nav:%@",nav.viewControllers);
//    NSLog(@"当前:%lu",(unsigned long)tabBarController.selectedIndex);

    if (tabBarController.selectedIndex==0) {

        if ([nav.viewControllers[0] isKindOfClass:[QuanViewController class]] || [nav.viewControllers[0] isKindOfClass:[MineViewController class]]) {

            if ([[NSUserDefaults standardUserDefaults] objectForKey:@"userid"]==nil) {

                [[NSNotificationCenter defaultCenter] postNotificationName:@"jumplogin" object:nil];//跳转登录界面通知

                return NO;
            }

        }

    } else {

        if ([nav.viewControllers[0] isKindOfClass:[QuanViewController class]] || [nav.viewControllers[0] isKindOfClass:[MineViewController class]]) {

            if ([[NSUserDefaults standardUserDefaults] objectForKey:@"userid"]==nil) {

                [[NSNotificationCenter defaultCenter] postNotificationName:@"jumploginting" object:nil];//跳转登录界面通知

                return NO;
            }

        }

    }

    return YES;
}

3.在首页及大厅的viewdidload里面接收通知实现跳转方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jumpLogin) name:@"jumplogin" object:nil];//跳转登录界面

//跳转登录界面
-(void)jumpLogin
{
    LoginViewController * vc=[[LoginViewController alloc]init];
    [self.navigationController pushViewController:vc animated:YES];
    self.tabBarController.tabBar.hidden=YES;
}
收藏
1
sina weixin mail 回到顶部