iOS开发中点击UITabBarItem弹出一个控制器(如常见未登录用户点击购物车弹出登录页面的效果)
2017-08-11 13:10
751 查看
项目的tabBar:
最近在做一个商城的项目,项目一需求:点击购物车弹出一个提示框提示用户该板块暂未开放(
)。这个效果的实现方式和在用户未登录时点击购物车弹出一个登录页面(看天猫)的实现方式是一样的,我们需要拦截TabBarItem的点击事件。
我在AppDelegate中将TabBarController设置了window的rootController,因此在AppDelegate中设置tabBarController的代理(遵守协议:UITabBarControllerDelegate),实现协议中的方法:
#pragma mark --- UITabBarControllerDelegate
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController
*)viewController{
UINavigationController * nav = (UINavigationController *)viewController;
UIViewController * vc = nav.childViewControllers[0];
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对应的控制器。
最近在做一个商城的项目,项目一需求:点击购物车弹出一个提示框提示用户该板块暂未开放(
)。这个效果的实现方式和在用户未登录时点击购物车弹出一个登录页面(看天猫)的实现方式是一样的,我们需要拦截TabBarItem的点击事件。
我在AppDelegate中将TabBarController设置了window的rootController,因此在AppDelegate中设置tabBarController的代理(遵守协议:UITabBarControllerDelegate),实现协议中的方法:
#pragma mark --- UITabBarControllerDelegate
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController
*)viewController{
UINavigationController * nav = (UINavigationController *)viewController;
UIViewController * vc = nav.childViewControllers[0];
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对应的控制器。
相关文章推荐
- 【iOS开发-28】制造一个UITabBarController标签控制器、定制UITabBarItem文字图片的6种方式以及More讲解
- iOS tabbar和navigation组合,点击item两次,会pop到上一个页面,解决不让控制器跳转的方法
- JavaScript调用App原生代码(iOS、Android)通用解决方案 实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功
- iOS 开发之 点击tabbarItem添加是否跳转登录页面判断
- 点击登陆链接在本页面弹出一个登陆窗口效果
- iOS开发一个用户登录注册模块需要解决的坑
- iOS 开发之 点击tabbarItem添加是否跳转登录页面判断
- iOS 开发之 点击tabbarItem添加是否跳转登录页面判断
- iOS tabbarItem的颜色都是白色,点击其中一个,其他的不变,没有点中的效果
- 点击ListView一个Item弹出窗体,窗体展示时添加动画效果切入
- ios开发,用户登录界面,输入用户名之后点击Next后切换到密码输入框,密码输入框输入后点击Return,键盘回收
- iOS 手动实现modal效果,从底部弹出一个控制器
- 一个JS弹出层用户登录效果
- 使用structs2.0开发一个简单的用户登录程序
- UITabBarController 标签栏控制器-IOS开发
- asp.net 点击按钮弹出一个页面
- jsp页面功能是向数据库删除一条记录,如果删除成功,JSP页面上弹出一个提示框告诉用户添删除成功!
- iphone开发我的新浪微博客户端-用户登录自定义弹出窗口篇(1.2)
- iphone开发我的新浪微博客户端-用户登录自定义弹出窗口篇(1.2)
- jQuery的一个Aspx页面弹出层的效果代码