版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337697
项目的tabBar:
最近在做一个商城的项目,项目一需求:点击购物车弹出一个提示框提示用户该板块暂未开放。这个效果的实现方式和在用户未登录时点击购物车弹出一个登录页面(看天猫)的实现方式是一样的,我们需要拦截TabBarItem的点击事件。
我在AppDelegate中将TabBarController设置了window的rootController,因此在AppDelegate中设置tabBarController的代理(遵守协议:UITabBarControllerDelegate),实现协议中的方法:
#pragma mark --- UITabBarControllerDelegate
UINavigationController * nav = (UINavigationController *)viewController;
UIViewController * vc = nav.childViewControllers0;
if ([vc isKindOfClass:ShoppingCartViewController class]) {
UserLoginObject *loginObject = UserLoginObject sharedUserLoginObject;
BOOL loginFlag = loginObject loginOrOutLogin;
if (loginFlag == NO) {
LoginController *loginC = [LoginController alloc init];
loginC.present = 1;
self.window.rootViewController presentViewController:loginC animated:YES completion:nil;
}else{
SVProgressHUD showErrorWithStatus:@"该板块未开发";
return NO;
}
return NO;
}
return YES;
}
当点击tabBarItem的时候就会调用该方法,return YES:能点击item对应的控制器,return NO:不能点击item对应的控制器。