iOS开发之点击tabBarItem进行Push一个页面
使用场景:
实现底部Tabbar两个TabBarItem,点击第二个跳转push到个人信息页面:
实现步骤:
首先设置UITabBarController的代理为appdelegate如下:myTabBar.delegate = self;
然后在interface后面写上代理<UITabBarControllerDelegate>
实现代理里面的- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController方法即可
代码如下:
#pragma mark - 跳转对应的页面
-(void)jumpToMainVC:(NSString *)messageBadgeNumStr {
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.delegate = self;
HomeViewController *homeVC = [[HomeViewController alloc] init];
self.tabBarController.viewControllers = @[[self navigationControllerWithFirstViewController:homeVC], [UIViewController new]];
NSArray *titles = @[@"首页", @"我的"];
NSArray *images = @[@"home_tab_home", @"home_tab_mine"];
[self.tabBarController.tabBar.items enumerateObjectsUsingBlock:^(UITabBarItem *item, NSUInteger idx, BOOL *stop) {
[item setTitle:titles[idx]];
[item setImage:[[UIImage imageNamed:images[idx]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
[item setSelectedImage:[[UIImage imageNamed:[images[idx] stringByAppendingString:@"pre"]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
CGFloat verticalOffSet = ;
UIEdgeInsets edgeInsets = item.imageInsets;
edgeInsets.top = -verticalOffSet;
edgeInsets.bottom = verticalOffSet;
item.imageInsets = edgeInsets;
[item setTitlePositionAdjustment:UIOffsetMake(, -verticalOffSet)];
item.tag = idx;
}];
self.window.rootViewController = self.tabBarController;
}
实现跳转代理:
#pragma mark - UITabBarControllerDelegate
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if (viewController.tabBarItem.tag == ) {
UserInfoViewController *userInfoVC = [[UserInfoViewController alloc] init];
UINavigationController *nav = self.tabBarController.selectedViewController;
[nav pushViewController:userInfoVC animated:YES];
return NO;
}
return YES;
}
iOS开发之点击tabBarItem进行Push一个页面的更多相关文章
- 李洪强iOS开发之- 点击屏幕遮挡键盘
李洪强iOS开发之- 点击屏幕遮挡键盘 实现的效果: 01 - 给当前的view添加点击事件,使点击屏幕的时候,让键盘退出 /** * 点击屏幕 隐藏键盘 * * @param tap */-(vo ...
- iOS开发~防止navigation多次push一个页面
在点击push下一个页面时,因为各种原因,点一下cell或按钮没有响应,用户可能就多点几下,这时候会打开好几个一样的页面. 这是因为push后的页面有耗时操作或者刚好push到另一个页面时,另一个页面 ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- iOS开发之--如何修改TabBarItem的title的字体和颜色/BarButtonItem的title的字体大小和颜色/添加背景图片,并添加点击方法
在进行项目的过程中,我们往往会遇到各种各样的自定义颜色和字体,下面提供一种修改系统自带的TabBarItem的字体和颜色的方法,希望能帮到大家: [[UITabBarItem appearance] ...
- ios开发图片点击放大
图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现 创建了一个专门用于放大图片的类,以下为.h文件 #import <Foundation/Foundation. ...
- IOS开发中--点击imageView上的Button没有任何反应
点击imageView上的Button没有任何反应: 解决方法:设置图片的userInteractionEnabled为YES,使该imageView可以与用户进行交互
- iOS开发 tableView点击下拉扩展 + 内嵌collectionView上传图片效果
---恢复内容开始--- //需要的效果 1.设置window的根视图控制器为一个UITableViewController #import "AppDelegate.h"#imp ...
- iOS开发--用户点击频繁,多个异步网络请求取消问题?
一.业务环境描述 当一个view同时添加两个tableView为subView的时候,两个tableView分别为mainTable和subTable. 当用户点击mainTable上的某一条数据时, ...
- iOS开发之--storyboary下,拖拽一个tableview/collectionView/view 等,顶端下沉64个像素的处理方法
大家可能会发现,在sb或者xib里面拖拽一个tableview/collectionview/view的,顶端会自动下沉64个像素,也就是说,运行在模拟器上去,自导航下面又自动下沉了64个像素, 那是 ...
随机推荐
- Linux之apt-get软件管理
apt-get 用Linux apt-get命令的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上.把它们的地址加入,apt-get ...
- Rails 用Webpack安装Bootstrap(附录webpack使用)
Rails6将默认使用webpack代替asset: 本文讲述如何自己配置. 参考: https://getbootstrap.com/docs/4.1/getting-started/webpack ...
- .net core 读取appsettings 的配置
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default&quo ...
- PHP类知识----析构方法点滴
网页执行完毕 手动调用析构方法 通过unset() 应用场景:断开mysql的连接 不同情况下,析构方法调用的时机不同,程序执行顺序如下 <?php class mycoach { public ...
- nginx准备
iptables相关命令 iptables -L查看相关规则 iptables -F关闭所有的防火墙规则 getenforce 查看selinux是否开启 ,如果已经开启,可以通过setenforc ...
- Hive中运行HQL语句错误
错误:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException( 或者为FAILED: Execution Error, return ...
- webpack打包工具之ts版开发框架搭建
本文用两个框架,一个是threejs,一个是phaser3,其实流程都是一样. nodejs.npm是基础,不再多说! 首先新建一个文件夹命名three-study,然后npm init -y 用we ...
- electron-vue [Vue warn]: Failed to resolve directive: decorator
electron-vue引入ant-desigin-vue使用ant自定义指令 v-decorator报销 <a-form-item> <a-input v-decorator=&q ...
- .Net中手动实现AOP
序言 资料 https://www.cnblogs.com/farb/p/AopImplementationTypes.html
- MessagePack Jackson 数据大小
我们在使用 MessagePack 对 List 对象数据进行序列化的时候,发现序列化以后的二进制数组数据偏大的情况. 请注意,不是所有的 List 对象都会出现这种情况,这个根据你 List 对象中 ...