美文网首页实用集合
iOS自定义tabbar后popToRootViewContri

iOS自定义tabbar后popToRootViewContri

作者: 26b5cc676194 | 来源:发表于2016-04-07 10:29 被阅读448次

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

问题:iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar

1.自定义代码:

- (void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

// 删除系统自动生成的UITabBarButton

[self removeTabBarButton];

}

-(void) removeTabBarButton {

// 删除系统自动生成的UITabBarButton

for (UIView *child in self.tabBar.subviews) {

if ([child isKindOfClass:[UIControl class]]) {

[child removeFromSuperview];

}

}

}

/**

*  初始化tabbar

*/

- (void)setupTabbar

{

HYTTabBar *customTabBar = [[HYTTabBar alloc] init];

customTabBar.frame = self.tabBar.bounds;

customTabBar.delegate = self;

[self.tabBar addSubview:customTabBar];

self.customTabBar = customTabBar;

}

2.pop代码:

[self.navigationController popToViewController:strongSelf.navigationController.childViewControllers[1] animated:YES];

3.结果:(因问题已经解决,暂时从网上找了一张遇到同样问题的图片作为替代)

21_88419_b6e87b66aee7f8b.png

解决方法:

1. pop的时候 发送通知

#define HYTNotificationCenter [NSNotificationCenter defaultCenter]

[HYTNotificationCenter postNotificationName:HYTPopViewControllerNotification object:nil];

2. 在自定义的tabcontroller 的viewdidload方法中注册通知,调用removeTabBarButton方法删除系统自带的就可以了

- (void)viewDidLoad {

[super viewDidLoad];

// 初始化tabbar

[self setupTabbar];

//.../

[HYTNotificationCenter addObserver:self selector:@selector(removeTabBarButton) name:HYTPopViewControllerNotification object:nil];

}

-(void) removeTabBarButton {

// 删除系统自动生成的UITabBarButton

for (UIView *child in self.tabBar.subviews) {

if ([child isKindOfClass:[UIControl class]]) {

[child removeFromSuperview];

}

}

}

ps:我尝试过连续调用几个popviewcontroller的方法来替代poptoviewcontroller,结果正常。

这说明popviewcontroller 和 poptoviewcontroller 的实现至少在自定义tabbar上是有本质差别的。

# via@新浪微博:王星凯SoWhat

相关文章

网友评论

    本文标题:iOS自定义tabbar后popToRootViewContri

    本文链接:https://www.haomeiwen.com/subject/lpbmlttx.html