iOS使用push隐藏子页面底部bottom TabBar

以下两种情况是我在开发过程中遇到的,一种是代码使用pushViewController,另一种是storyboard直接使用push。之前也查阅了很多关于隐藏底部tabbar的资料,但是要么使用起来麻烦,要么就是藕合度高代码不规范(这里有点代码洁癖,当前类相关的事务应该写在本类中)。

1、使用pushViewController

如A->B;A是列表页,带有tabbar;B是内容页,不需要tabbar;

在A的事件中打开B,如下代码

-(void)showVideo:(EJAlbumModel *)model bySId:(NSString *)sid{
NSLog(@"%@",@"执行委托");
EJClassVideoViewController *videoController=[[EJClassVideoViewController alloc] init];
videoController.model=model;
videoController.semesterClassId=sid;
self.navigationItem.backBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStyleBordered target:nil action:nil];// 修改下级页面的返回按钮,此处我是很想写到videoController中,但是backBarButtonItem的机制决定必须写在A中;
[self.navigationController pushViewController:videoController animated:YES];
}

在B的加载View视图事件initWithNibName中,加入
self.hidesBottomBarWhenPushed=YES;即可实现打开B隐藏tabbar,返回A重新现实tabbar;很简单吧

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.hidesBottomBarWhenPushed=YES;
}
return self;
}

2、使用storyboard

在storyboard中建立A和B,并使用ctrl+链接至B,即segue的打开方式;如下图所示:

此处只需要在可视化视图中修改B的一个属性即可(可惜很多技术文章都没提到这点,是因为我没有找到吗),如下图,选中B视图,并勾选Hide Bottom Bar on Push;

时间: 2024-10-17 08:13:45

iOS使用push隐藏子页面底部bottom TabBar的相关文章

一个带动画的页面底部的TabBar的实现

有时有这样一个需求,页面底部有几个图标能够点击,假设一个screenWidth显示不下这些图标,则这一列图标最后一个是more,点击more,能够通过动画展示两列图标 这样来增加layout中: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&quo

关于ios的safari下,页面底部弹出登陆遮罩层,呼出软键盘时 问题解决

前阵子遇到了一个问题,就是手机端页面弹出遮罩+底部登陆的弹出层. 一般情况下就直接给fixed固定定位了,然而做测试时发现了一个很大的问题 iOS的safari下,固定定位会跑到整个页面的最底部,而不是当前页的最底部. 查了好多百度然而还是没有找到有用的解决方案,后来问了一位前端的大神,大神说这种情况下,需要区分两种状态, 一是默认状态,即 除了safari之外的其他浏览器(需要判断一下浏览器是否为safari) 二是 safari浏览器状态下,(由于公司只要求测UC,QQ浏览器,顾,发现  在

iOS 在push进新页面时的animate失效

[UIView animateWithDuration:2.0 animations:^{         imageView.alpha=0.1;     } completion:^(BOOL finished) {              }]; 类似以上的动画代码,当你在push进入一个新页面,在新页面一开始就执行,那么就和push的动画冲突了,那么这个动画效果不执行,所以要么延时执行这个动画(等push完),要么其他办法. 当然这样设计也是有原因的,一边push的动画,一边你自定义的

HTML5培训第12节课堂笔记(本地存储、mui打开新页面、创建子页面)

HTML5培训第12节课堂笔记 1.     html5规范中本地储存localStorage与sessionStorage html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此  sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储. localStorage用

vue 父页面中含子页面滑动,滑动结束,底部组件进行滑动

详见效果地址: https://pan.baidu.com/s/1Yin2q0Fh_6AQJTlbie7QMw 使用 1.v-touch 实现滑动效果,父级页面滑动,当父级含有子页面需要滑动功能hasClass("sm_img"),需要判断是否继续父级滑动,有的话子页面先滑动,通过upB去判断 if($(imgShowChild[that.childNum]).children().children().hasClass("sm_img")&&tha

MUI底部导航切换子页面

1.登陆页面进入之后,进入到main页面,main页面只有一个底部导航,然后引入子页面进行渲染. <nav class="mui-bar mui-bar-tab" id="tabbar"> <a class="mui-tab-item mui-active" href="html/applyy.html" id="apply"> <span class="mui-ic

页面底部input被弹出来的键盘遮挡(iOS系统)—附解决方案

项目上要做一个留言回复的框. 类似这种用一个div套在input外面, 点击按钮时, 这个div出现, 位于页面底部. 并且input获得焦点, 自动弹出系统键盘. 但是, 在开发的时候发现,在iOS系统中这个div总是被键盘遮住, 曾经使用了垫高div框的办法, 天真的以为能够使它往上挪, 但是发现没有用, 需要手动往上拉才能出来. 查了很久, 看网上很多人都死在了这个问题上. 比较靠谱的答案在知乎上找到的 原因是fixed定位加上bottom:0在ios里无效了, 有人建议是改为弹性布局,

在每一个即将被push的控制器push之前,设置viewController.hidesBottomBarWhenPushed = YES,表示这个控制器在被push的时候会隐藏底部的tabbar

#import "SZMNavBaseController.h" @interface SZMNavBaseController () @end @implementation SZMNavBaseController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [supe

push的时候隐藏底部的tabbar

#import "mainNavigationControllers.h" @interface mainNavigationControllers () @end @implementation mainNavigationControllers - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemory