2015-05-21 93 views
1

我做这在所有选项卡控制器:显示UITabBar只UITabBarController.viewControllers

(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    self.tabBarController.tabBar.hidden = NO; 
} 

-

(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    self.tabBarController.tabBar.hidden = YES; 
} 

,它的工作,当我通过控制器前进控制器,但回到我的TabBar消失的方式。

+0

好,当你回去,它也运行了'viewWillAppear'为你的viewController将回到,所以它运行'hidden = NO'。 您的rootViewController(s)不得将其设置为隐藏在'viewWillAppear'上。 – Erakk

+0

当我从控制器2回到控制器1时,起初叫做控制器1的viewWillAppear然后控制器2的viewWillDisappear。但我可以通过正确的方式来做我所需要的。 –

+0

如果您使用'viewDidAppear'或'viewDidDisappear'取决于您想要最后出现的女巫怎么办? – rob180

回答

0

由于viewWillDisappear:方法被调用,执行self.tabBarController.tabBar.hidden = YES;行时,UITabBar在返回时正在消失。然而,我并不是100%清楚你想要完成什么,所以我不知道如何提供一个解决方案,而不是除去有害的代码行。

+0

我有UITabBarController与2个控制器:Controller1和Controller2。在两个控制器中,我都添加了这些:(void)viewWillAppear:(BOOL)animated动画 {super viewWillAppear:animated]; self.tabBarController.tabBar.hidden = NO; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; self.tabBarController.tabBar.hidden = YES; }当我从controller2到controller1时,我的tabBar被消失了,原因是在第一次调用controller1的viewWillAppear时,controller2的viewWillDisappear。 –

+0

我想只在UITabBarController.viewControllers上看到tabbar,在其他所有不应该显示的屏幕上 –

+0

如果你的View Controller结构设置正确,当UITabBarController从屏幕上移除时,它会自动删除UITabBar,因为UITabBar的视图包含在UITabBarController的视图中。因此,您的视图结构可能被错误地安排。 – socaljoker

0

这样的事情应该做的伎俩。 编辑:因为它没有工作,尝试这种解决方案,你说你只想显示上的UITabBarController

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    if([self isKindOfClass:[UITabBarController class]]) 
    { 
    self.tabBarController.tabBar.hidden = NO; 
    }else{ 
    self.tabBarController.tabBar.hidden = YES; 
    } 
} 
+0

我认为应该有通用的解决方案。 –

+0

它是否按照你的要求工作?如果是这样,我会想到一个优雅的方式。 – rob180

+0

不,它不适合我 –