iOS开发 - 点击tabbar某一个item,直接push跳转进入需要的页面,而不是切换tab
2023-09-11 14:21:22 时间
在做这个功能之前,先来说说背景,博主要在tabbar中新增一个item,而很不幸是这个tabbar是SB创建的,而博主本身对SB的了解并不透彻,所以准备用纯代码的方式来添加这个item。
1.可能对于很多用惯了纯代码的开发来说,SB的确过于陌生了,怎么来添加一个新的VC到SB创建完成的tababr中呢:
/*如果你是自定义的tabbar,那样就不用多说了,更简单,博主要说的是系统的tabbar*/
//获取到当前的tabbar中的VC
NSMutableArray *newItems = [NSMutableArray arrayWithArray:self.viewControllers];
//插入你创建的VC
[newItems insertObject:[[JumpViewController alloc] init] atIndex:3];
//因为本VC是继承于系统的UITabBarController的,所以,下面方法重新定义新的tababr
self.viewControllers = newItems;
2.怎么让点击了tabbar的item之后不切换tabbar,而是直接跳转
首先需要遵守两个协议UITabBarControllerDelegate,UITabBarDelegate
其次是用代理方法:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
if ([tabBarController.tabBar.selectedItem.title isEqualToString:@"跳转的页面"]) {
[[NSNotificationCenter defaultCenter] postNotificationName:[NSString stringWithFormat:@"jump%ld",tabTag] object:nil];
return NO;//为NO就不会切换tab
}
return YES;
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
//这里为什么要通过item名字来判断第几个tab呢?
//因为发现self.selectIndex不准确,索性手动来判断。
//解释下为什么需要知道当前是第几个item?
//因为SB创建的tabbarController没有navgation,所以无法直接push跳转。
//present虽然能跳转,但是没了navgation,在present的页面万一push就又麻烦了。所以不能直接在tabbarController里面push;
//另外,为了保证发送通知针对的是你当前所在的界面,而不是每次点击发送的通知和接收的通知都一样,所以,加上index后缀,使得通知一一对应。
if ([item.title isEqualToString:@"首页"]) {
tabTag = 0;
}
if ([item.title isEqualToString:@"类别"]) {
tabTag = 1;
}
if ([item.title isEqualToString:@"购物车"]) {
tabTag = 2;
}
if ([item.title isEqualToString:@"我的"]) {
tabTag = 4;
}
if ([item.title isEqualToString:@"跳转的页面"]) {
return;
}
}
最后一步,在每一个tabdeVC中注册通知,执行push跳转,通知的名字是根据当前tab的index作为后缀的哦。
ps:你会发现JumpViewController并无卵用,不会被用到,只是进行一个占位。
相关文章
- unity3D 搞定任意ios插件
- iOS/iphone开发如何为苹果开发者帐号APPID续费
- Unity3d使用蓝牙(bluetooth)开发IOS点对点网络游戏
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
- iOS开发之抽屉效果实现
- IOS开发之自定义Button(集成三种回调模式)
- iOS开发系列--绘图与滤镜全面解析
- iOS开发:创建真机调试证书
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS开发UI篇—UITableview控件简单介绍
- Ios开发中UILocalNotification实现本地通知实现提醒功能
- iOS开发那些事-iOS6苹果地图实用开发
- iOS开发那些事-iOS应用本地化-文本信息本地化
- iOS网络编程-iOS中Socket编程介绍
- ios swift5 tableView cell 自适应高度 自动行高
- iOS Block的循环引用
- iOS Xcode11打开远程推送(Push Notifications)开关
- ios本地存储(swift版)查看真机沙盒 归解档 本地数据持久化
- iOS音视频开发,VideoToolBox H264视频硬解码
- iOS开发 - NSScanner的使用方法
- iOS一个开发系列中 - UIButton 使用摘要
- Ios 项目从头开发 MVVM模式(三)