iOS 自定义tabbar 关于push问题 小技巧

在开发的时候,相信大家都用过tabbar ,今天我在写项目的时候也用到了tabbar  紧着着一系列问题就来了

需求:我的项目的主要框架是tabbar ,但是用系统的tabbar不美观

于是我就自定义了我的tabbar,创建了一个类,继承自UITabBarController,在这个类中我将系统原生的tabbar隐藏了,就写了这样一句话,

 self.tabBar.hidden=YES;

然后就是一系列的我们写得不能在熟的代码了,引入viewcontroller的头文件,然后实例化,将viewcontroller都做成带导航的,放到一个数组里,在将这个数组赋给tabbar·像这样

    TrendFashionViewController *trend=[[TrendFashionViewController alloc] init];
//    UINavigationController *trendNa=[[UINavigationController alloc] initWithRootViewController:trend];
//    trendNa.navigationBarHidden=YES;
    LifeResourceViewController *left=[[LifeResourceViewController alloc] init];
//     UINavigationController *leftNa=[[UINavigationController alloc] initWithRootViewController:left];
//    leftNa.navigationBarHidden=YES;
    MaintainManageViewController *main=[[MaintainManageViewController alloc] init];
//     UINavigationController *mainNa=[[UINavigationController alloc] initWithRootViewController:main];
//    mainNa.navigationBarHidden=YES;
    PerfectSelfPhotoViewController *per=[[PerfectSelfPhotoViewController alloc] init];
//     UINavigationController *perNa=[[UINavigationController alloc] initWithRootViewController:per];
//    perNa.navigationBarHidden=YES;
    MicroSoundViewController *mir=[[MicroSoundViewController alloc] init];
//     UINavigationController *mirNa=[[UINavigationController alloc] initWithRootViewController:mir];
   // mirNa.navigationBarHidden=YES;
    NSArray *arr=[NSArray arrayWithObjects:trend,left,main,per,mir, nil];
    self.viewControllers=arr;

紧接着就是自定义tabbar了,实现自己想要的效果,然后接着我就把这个自定义的tabbarcontroller 在appdelegate里面 做成root了,但是当我想要push到别的页面的时候,问题来了 用原来的命令

self.navigationController.hidesBottomBarWhenPushed=YES;

根本就不管用,原因在于 我的tabbar是我自定义的,所以这个命令自然就不生效了,对此我也在网上查了好多办法,有的说push 的时候将tabbar移除屏幕外 回来的时候在放回来,等等,试验了一下也没试出来,后来 我就想,干脆在appdelegate里面不用自定义的tabbar当根了,用navigationcontroller
当根,然后把自定义tabbar类里面的viewcontroller 的导航都去掉,不就OK 了,这样当我想push 的时候,什么烦恼都没有了,直接push

MyTabBarController *myTabBar=[[MyTabBarController alloc] init];
        UINavigationController *na=[[UINavigationController alloc] initWithRootViewController:myTabBar];
        na.navigationBarHidden=YES;
              self.window.rootViewController=na;

如上代码,就很巧妙的解决了 push以后tabbar 不消失的问题了,由于我要自定义导航栏 所以我把navigationBarHidden设置成yes了 ;

如果你觉着其他的隐藏自定义tabbar的办法麻烦,不妨试试这个方法哦

当然了 大伙要是有好的办法,欢迎共享呀,(*^__^*) 嘻嘻……

时间: 2024-10-11 20:51:46

iOS 自定义tabbar 关于push问题 小技巧的相关文章

iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar 的解决办法

iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar  的解决办法 问题:iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar 1.自定义代码: - (void)viewWillAppear:(BOOL)animated { [super  viewWillAppear:animated]; // 删除系统自动生成的UITabBarB

iOS 开发中使用到的小技巧汇总

国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线: self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone; self.tableView.showsVerticalScrollIndicator=NO; 2. 解决cell分割线左边短20px的问题 -(void)viewDidLayoutSubviews{ i

自定义Tabbar实现push动画隐藏效果

在之前的一篇文章(链接)中我写到了没有用UITabbarController来实现一个自定义Tabbar,当然功能也简陋了点.注意到在Weico或微信中的自定义tabbar有一个这样的功能:push到下一个页面时tabbar会被自动隐藏,下面我就来说说如何使我前面做的自定义tabbar也能实现隐藏. 如果是原生的tabbar,这个功能实现很容易.在iOS中,每个UIViewController都有一个属性hidesBottomBarWhenPushed,每次push一个viewControlle

自定义tabBar在push到下一个界面的时候实现隐藏

今天工作中用到了自定义tabBar,在其中隐藏掉了系统的tabBar,用view自定义一个tabBar,效果还挺好.接下来问题来了,在我push到子页面的时候就出现了tabBar无法隐藏的问题,搞了半天终于弄好了,拿出来与大家一块分享,废话不多说,直入正题. 在自定义的TabBarController.m里写方法-(void)setHidesBottomBarWhenPushed:(BOOL)hidesBottomBarWhenPushed{    self.你自己定义的View.hidden

iOS开发之软键盘使用小技巧

在iOS开发过程中,有时候需要弹出软键盘进行输入,有时候又需要在某些情况下隐藏软键盘,以提高用户体验.今天有几个关于软键盘的小技巧和大家分享. (1)只弹出数字键盘 有某些需求中,要求用户只能在Text Field中只能输入数字,这需要怎么做呢?可以写一个正则表达式用于判断用户输入:或者进行字符匹配等等.但是这都要写代码.程序员都是爱偷懒的.在iOS中可以通过简单设置,使弹出为数字键盘,这样用户输入就只能为数字了. 选中某个Text Field.选择右侧的Show the Attributes

IOS开发之代理的设计小技巧

1.关于代理对象的设计小技巧 在设计一个类,需要通过代理和协议来从外部获取需要的动态的数据.那么在这里设计使用代理会有两种方法. <第一种方法> 也是比较常见的: 在你设计的类中,声明一个代理属性 然后外部使用的时候 最后根据那个<...Protocol>协议,去遵循这个协议并实现协议的方法. <第二种方法>在创建这个你要设计的类对象的构造方法中添加一个代理对象的参数,目的就是按照需要,你如果要创建这个对象,你必须添加代理对象. 这样外部在创建这个对象的时候,使用这个方

[IOS 实现TabBar在Push后的隐藏 以及 两级Tabbar的切换]

翻了好多网页都没找到资料,自己试了下终于成功了,遂分享一下. 1.实现TabBar在Push后的隐藏 假如结构是这样 NavController->A->B,我们想要实现在A里有Tabbar,Push到B后Tabbar消失(参考淘宝首页点击任何广告页面后Push,底部Tabbar消失) 在A中创建B时 DetailinfoViewController *detailinfo=[[DetailinfoViewController alloc]init]; detailinfo.hidesBott

iOS开发中的总结的小技巧,分享给大家!!(待续未完)

这是我在写项目或者学习知识点或者请教人家的时候总结的小技巧 原来是写在笔记本上面的,还是分享给大家了.可能会很乱,觉得对自己有用的就拿走吧,有错漏的地方也求大家指点修正.废话不多说直接来. 1. 监听控件的三种方法 1) addTarget 2)代理 3)通知 2. UITextfiled(文本框)中有一个属性:clearButtonMode 选择 UITextFieldViewModeAlways 就可以在输入多个字符后,右边有个x号点一下全部清除,用户体验会好一点. UITextField

iOS开发常见BUG和一些小技巧(ps:耐心看完,很实用)

[385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Created by beyond on 15/6/6. // Copyright (c) 2015年 beyond.com All rights reserved. // 不一定要用继承,可以使用分类 #import MyScrollView.h #import CoView.h @implementation MyScrollView - (void)touchesBegan