2015-05-21 68 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

不,它不適合我 –