注册 登录
主题 : iOS11 自定义tabbar遇到的问题,删除系统自带tabbar按钮
级别: 新手上路
UID: 611976
精华: 0
发帖: 4
可可豆: 13 CB
威望: 13 点
在线时间: 29(时)
注册时间: 2017-04-20
最后登录: 2017-11-18
0 楼:  发表于: 2017-09-22 17:23    发自: Web Page
来源于 一般提问 分类

iOS11 自定义tabbar遇到的问题,删除系统自带tabbar按钮   

        之前自定义tabber,就是创建自己的tabbar盖在系统的tabbar上面

        
      //自定义tabbar
    MyTabbar *costmertabbar = [[MyTabbar alloc] init];
    costmertabbar.frame = self.tabBar.bounds;
    costmertabbar.delegate = self;
    self.costmertabbar = costmertabbar;
    [self.tabBar addSubview:self.costmertabbar];

    然后删除系统自带Tarbar
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    for (UIView *child in self.tabBar.subviews) {
        if ([child isKindOfClass:[UIControl class]]) {
            [child removeFromSuperview];
        }
    }
}

可是运行时候,发现在自定义tabbar里面并没有调用,系统自带的按钮依然像盖在
上面,导致自己的tabbar里面按钮切换没有反应,之前的ios11以前都没有这个问题的。
后来发现在-(void)viewDidAppear:(BOOL)animated里面重新调用删除系统自带tabbar
按钮代码就可以了。
我猜可能ios11里面-(void)viewWillAppear:(BOOL)animated调用的时候系统的tabbar按
钮还没有完全创建,所以你调用删除代码没效果,但是ios11之前却没发生这种情况,大家怎么看呢?

图片:WX20170922-171409.png
级别: 新手上路
UID: 166751
精华: 0
发帖: 3
可可豆: 12 CB
威望: 12 点
在线时间: 65(时)
注册时间: 2012-09-15
最后登录: 2017-09-26
1 楼:  发表于: 2017-09-22 18:27    发自: Web Page
进入页面系统自带tabbar按钮 消失有延迟
级别: 新手上路
UID: 624437
精华: 0
发帖: 1
可可豆: 1 CB
威望: 1 点
在线时间: 1(时)
注册时间: 2017-09-25
最后登录: 2017-10-24
2 楼:  发表于: 2017-09-25 11:35    发自: Web Page
楼主,问一下,  我push了一个界面后, 再回去发现系统的tabbar还是出现了, 怎么解决啊?
图片:屏幕快照 2017-09-25 上午11.34.52.png
级别: 侠客

状态: 连续签到 - [54天]
UID: 471816
精华: 0
发帖: 198
可可豆: 532 CB
威望: 409 点
在线时间: 429(时)
注册时间: 2015-05-11
最后登录: 2017-12-15
3 楼:  发表于: 2017-09-25 15:06    发自: Web Page
说明iOS 11很卡,目前不建议升级!


[self.tabBar bringSubviewToFront:self.costmertabbar];


------------------------------------- 分割 ---------------------------------

续:

经我测试发现,Xcode 9 中,在自定义TabBarController中的 viewWillAppear 方法或者 viewDidAppear 方法中删除掉了系统的 UITabBarButton 后,

当你 push 进一个子级页面时(调用了hidesBottomBarWhenPushed),再返回 TabBarController 根视图时,系统会很操蛋的

重新给你生成 TabBarController 子控制器对应数量的 UITabBarButton ,并且有可能放在 tabBar 的最上面。

此外,Xcode 9 中,自定义TabBarController 4个子控制器,tabBar 可能会莫名其妙的变成含 5个 UITabBarButton。

只能说Xcode 9还不太完善,或者说新的东西大家自行适配吧。
[ 此帖被aiq西米在2017-09-25 19:06重新编辑 ]

It's time to turn.
级别: 新手上路
UID: 611976
精华: 0
发帖: 4
可可豆: 13 CB
威望: 13 点
在线时间: 29(时)
注册时间: 2017-04-20
最后登录: 2017-11-18
4 楼:  发表于: 2017-09-25 18:15    发自: Web Page
回 2楼(NAMELJQ) 的帖子
在tabbarcontrol里面-(void)viewdidAppear:(BOOL)animated干掉系统的控件就行了
级别: 侠客

状态: 连续签到 - [96天]
UID: 518447
精华: 0
发帖: 116
可可豆: 750 CB
威望: 536 点
在线时间: 166(时)
注册时间: 2015-10-28
最后登录: 2017-12-08
5 楼:  发表于: 2017-09-26 17:51    发自: Web Page
在-(void)viewDidAppear:(BOOL)animated里面重新调用删除系统自带tabbar,系统自带的还是会先显示一下再消失,
级别: 侠客
UID: 390073
精华: 0
发帖: 87
可可豆: 366 CB
威望: 366 点
在线时间: 180(时)
注册时间: 2014-10-22
最后登录: 2017-11-01
6 楼:  发表于: 2017-09-27 11:34    发自: Web Page
直接 self.tabBar setHidden:YES 就可以了.每次都会给你生成新的,你直接隐藏就可以了
级别: 新手上路
UID: 611976
精华: 0
发帖: 4
可可豆: 13 CB
威望: 13 点
在线时间: 29(时)
注册时间: 2017-04-20
最后登录: 2017-11-18
7 楼:  发表于: 2017-09-28 17:54    发自: Web Page
回 5楼(L_Sovereign) 的帖子
会显示一下,你怎么写的,我这边没出现这种问题哦。。
级别: 新手上路
UID: 611976
精华: 0
发帖: 4
可可豆: 13 CB
威望: 13 点
在线时间: 29(时)
注册时间: 2017-04-20
最后登录: 2017-11-18
8 楼:  发表于: 2017-09-28 17:56    发自: Web Page
回 6楼(ynyn5683) 的帖子
因为自定义tabbar就是盖在系统tabbar上面,系统tabbar隐藏了,那自定义的不也就没了
级别: 新手上路
UID: 574378
精华: 0
发帖: 1
可可豆: 1 CB
威望: 1 点
在线时间: 158(时)
注册时间: 2016-07-21
最后登录: 2017-11-13
9 楼:  发表于: 2017-09-29 10:25    发自: Web Page
只需要在自定的
XXNavigationController ()<UINavigationControllerDelegate>//加上代理。自己给自己代理
// 代理方法上
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(nonnull UIViewController *)viewController animated:(BOOL)animated{
//加上
[self.tabBarController.tabBar removeFromSuperview];
}
请叫我雷蜂
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部