ios tabbar隐藏 显示第一个界面隐藏了,第2个界面怎么显示出来

IOS app中有两个UITabBarController,即在第一个页面有4个按钮,进入子页面底部也有几个按钮_IOS开发-织梦者
当前位置:&>&&>& > IOS app中有两个UITabBarController,即在第一个页面有4个按钮,进入子页面底部也有几个按钮
IOS app中有两个UITabBarController,即在第一个页面有4个按钮,进入子页面底部也有几个按钮
IOS app中有两个UITabBarController,即在第一个页面有4个按钮,进入子页面底部也有几个按钮。对于一个app中有两个TabBar,大部分 认为该UI不够友好,也不符合苹果的人机交互。
我们先看下效果图
事实上我们有两种解决方案
1.在子页面底部的tabbar我们可以用按钮代替,跟之前博客说在导航栏上UISegmentedControl,切换显示不同的VC,
2、在app中添加2个tabbar。
方案1,在此不再赘述,可参考之前的那片博客,直接看下方案2
1)、新建一个VC继承UITabBarController,然后在该VC中初始化tabbar
初始化Tabbar
- (void)initTabBar{
HomeOneViewController *h1 = [[HomeOneViewController alloc] init];
HomeTwoViewController *h2 = [[HomeTwoViewController alloc] init];
HomeThreeViewController *h3 = [[HomeThreeViewController alloc] init];
HomeFourViewController *h4 = [[HomeFourViewController alloc] init];
NSArray *rootArray = [NSArray arrayWithObjects:h1,h2,h3,h4, nil];
NSArray *nameArray = [NSArray arrayWithObjects:@&首页&,@&签到&,@&日报&,@&我的&, nil];
h1.title = nameArray[0];
h2.title = nameArray[1];
h3.title = nameArray[2];
h4.title = nameArray[3];
NSMutableArray *vcArray = [NSMutableArray array];
for (int index = 0; index & rootArray. index++) {
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:rootArray[index]];
//tabBar未选中的image
UIImage *normalImg = [[UIImage imageNamed:[NSString stringWithFormat:@&tabBar%d_no.png&,index + 1]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//tabBar已选中的image
UIImage *selectImg = [[UIImage imageNamed:[NSString stringWithFormat:@&tabBar%d_yes.png&,index+1]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//设置tabBar显示的文字
nav.tabBarItem = [[UITabBarItem alloc] initWithTitle:nameArray[index] image:normalImg selectedImage:selectImg];
nav.tabBarItem.tag = index +1;
nav.tabBarItem.title = nameArray[index];
[vcArray addObject:nav];
//tabbar未选中时文字的颜色,字体大小
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor lightGrayColor],NSForegroundColorAttributeName,[UIFont systemFontOfSize:14.0],NSFontAttributeName, nil] forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:RColor,NSForegroundColorAttributeName,[UIFont systemFontOfSize:14.0],NSFontAttributeName, nil] forState:UIControlStateSelected];
self.viewControllers = vcA
self.view.backgroundColor = [UIColor whiteColor];
2)、我们在HomeOneViewController中的cell点击事件中添加如下代码,即进入第二个tabbar
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
OneSubViewController *ycf = [[OneSubViewController alloc] init];
ycf.hidesBottomBarWhenPushed=YES;// 进入后隐藏tabbar
[self.navigationController pushViewController:ycf animated:YES];
3)、OneSubViewController就是第二个tabbar,也是继承自UITabBarController,里面初始化tabbar 方式一样。代码不再贴了
然后运行代码后就会发现一个问题SubOneViewController和SubTwoViewController有两个导航条,因为在第一个tabbar有导航条,第二个tabbar也有。看下上面的代码中有flag,看下作用,就是是否需要隐藏第一个tabbar的navigationController,在进入第二个tabbar是需要隐藏,
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden= NO;
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
if (flag==0) {
self.navigationController.navigationBar.hidden= YES;
4)、现在看下返回按钮的事件,一搬的子页面回到父VC,直接
[self.navigationController popViewControllerAnimated:YES];
但是在第二个tabbar回到上个tabbar,该如何回去呢,如下方式才能回去
[self.tabBarController.navigationController popViewControllerAnimated:YES];
需要注意的是我这边的子VC都继承了一个BaseViewController,里面有对导航栏和页面样式的配置。
self.navigationController.navigationBar.translucent = NO;//1、导航栏不模糊,2、view的高度从导航栏底部开始
self.edgesForExtendedLayout = UIRectEdgeN//指定边缘要延伸的方向,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。将属性设置为UIRectEdgeNone
被上面两个属性坑死了
self.extendedLayoutIncludesOpaqueBars = NO;
self.modalPresentationCapturesStatusBarAppearance = NO;
写这个demo时,我没有设置self.edgesForExtendedLayout,默认值时UIRectEdgeAll,底部tabor会遮挡子VC的底部49高度。仅此谨记!!!
对于这个2个tabbar还有中实现方式,在AppDelegate中,先初始化2个tabbar,默认rootViewControoler = 第一个tabbar。在点击cell跳转到第二个tabbar时,再将rootViewControoler=第二个tabbar,从第二个tabbar回到第一个tabbar时,也是重新设置rootViewControoler。以上就是IOS app中有两个UITabBarController,即在第一个页面有4个按钮,进入子页面底部也有几个按钮的全文介绍,希望对您学习和使用iOS开发有所帮助.
这些内容可能对你也有帮助
更多可查看IOS开发列表页。
猜您也会喜欢这些文章当一个UITabbarController管理多个UINavigationController的时候,
我们要从这每一个UINavigationController中push一个ViewController,
如果不作处理,就会出现推出来的ViewController同样会显示TabBar。
去除方法很简单,代码如下:
ViewController *controller = [[ViewControlleralloc]init];
[controller setHidesBottomBarWhenPushed:YES];//加上这句就可以隐藏推出的ViewController的Tabbar
[self.navigationController pushViewController:controller animated:YES];
转载请注明出处:
阅读(...) 评论()- (void)setTabBarHidden:(BOOL)hidden
UIView *tab = self.tabBarController.
if ([tab.subviews count] & 2) {
if ([[tab.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) {
view = [tab.subviews objectAtIndex:1];
view = [tab.subviews objectAtIndex:0];
if (hidden) {
view.frame = tab.
view.frame = CGRectMake(tab.bounds.origin.x, tab.bounds.origin.y, tab.bounds.size.width, tab.bounds.size.height);
self.view.frame = view.
self.tabBarController.tabBar.hidden =
阅读(...) 评论()翻了好多网页都没找到资料,自己试了下终于成功了,遂分享一下。
1.实现TabBar在Push后的隐藏
假如结构是这样 NavController-&A-&B,我们想要实现在A里有Tabbar,Push到B后Tabbar消失(参考淘宝首页点击任何广告页面后Push,底部Tabbar消失)
在A中创建B时
DetailinfoViewController *detailinfo=[[DetailinfoViewController alloc]init];
detailinfo.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:detailinfo animated:YES];
2.实现两级Tabbar的切换
结构和上面一样,但是A有Tabbar,B也有Tabbar,而且不一样(参考淘宝点击淘点点,页面PUSH然后切换新的tabbar)
在A中创建B时
MysecondhandViewController *Mysecondhand = [storyBoard instantiateViewControllerWithIdentifier:@"MysecondhandViewController"];
Mysecondhand.hidesBottomBarWhenPushed=YES;
-(void)viewWillAppear:(BOOL)animated{
self.tabBar.hidden=false;
tabbar貌似没有像tabbleview一样的reload刷新函数,但通过这样的方式就起到了一个类似刷新的效果。
阅读(...) 评论()1.首先说vc -& vc1 push一层界面的隐藏方法
在需要push的方法里
self.hidesBottomBarWhenPushed = YES;
ZHMeDetailTableViewController *mdvc = [[ZHMeDetailTableViewController alloc] init];
[self.navigationController pushViewController:mdvc animated:YES];
self.hidesBottomBarWhenPushed = NO;// 注:有的时候用self.hidesBottomBarWhenPushed = YES;无效,这时要用mdvc.hidesBottomBarWhenPushed = YES;
2.需要push两层界面时隐藏tabBar的办法
即vc -& vc1 -& vc2
在vc -& vc1的写法还是要向上面一样
然后, 在vc1的 viewWillAppear 方法中
-(void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
self.hidesBottomBarWhenPushed = YES;
在vc2的 viewDidDisappear 方法中
-(void)viewDidDisappear:(BOOL)animated
[super viewDidDisappear:animated];
self.hidesBottomBarWhenPushed = NO;
问题完美解决
本文已收录于以下专栏:
相关文章推荐
系统自带的UITabBarController有时候到不到要求,需要自定义样式。
有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住。
那么,从Tab进入子的Controller想要...
原文地址:http://blog.csdn.net/wuwo333/article/details/
以下两种情况是我在开发过程中遇到的,一种是代码使用pushViewControl...
关于隐藏tabBar底部的导航,模仿微信做法,主要用于方便在单独的页签可以一直push到下一个UIViewController;
布局:首先为一个UITabBarController
以下两种情况是我在开发过程中遇到的,一种是代码使用pushViewController,另一种是storyboard直接使用push。之前也查阅了很多关于隐藏底部tabbar的资料,但是要么使用起来麻...
由于手机界面比较小,有时候由于业务的需要,需要隐藏那个导航用的tabbar,方法有下面几个方法
方法一 
    YourAppDelegate *app = (YourAp...
问题描述:
使用storyboard开发,从来源控制器Push到目标控制器,在模拟器中运行,跳转后的界面的布局控件从上往下移动。
一. Tabbar 隐藏
以下方法会导致使用了 Navigator 导航是自动隐藏了 tabbar .(push 之后再次需要时就要用下面方法添加一个新的 tabbar 了)
1.打开 Xco...
自定义的tabbar 在push的时候 该如何隐藏tab bar呢,在这里分享一下我的解决办法
最近我所在的项目组对项目进行了一些基础组件的优化,其中有关于UITabBarController隐藏tabBar的问题感觉有必要总结下。
一,需求分析
先来说说项目基本需求:整个项目由左侧...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 跳转界面tabbar黑影 的文章

 

随机推荐