2013-04-05 81 views
6

我開發一個ios應用程序,並在該應用程序即時通訊使用TabBar控制器。 並從標籤欄控制器內導航到另一個視圖控制器。 之前推視圖控制器IM設置該控制器彈出視圖控制器後出現的標籤欄

viewController.hidesBottomBarWhenPushed = YES; 

和IM導航到具有在底部的標籤欄的另一個視圖控制器的特性。

問題是,當我彈出視圖控制器回到視圖控制器的標籤欄也出現在該視圖。 當彈出視圖控制器時,有沒有辦法隱藏標籤欄?

如果有人能夠幫助我解決這個問題,那該多好。

在此先感謝。

+0

顯示代碼你是如何放置tabbar的? – 2013-04-05 09:48:40

回答

3

在這種情況下,viewWillAppear方法將使用滿。在firstviewcontroller把這個代碼

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.tabBarController.tabBar.hidden = YES; 
} 

所以當secondviewcontroller POP操作出那麼它會調用這個方法,你的底欄將被隱藏。

+0

我試過這個,但這不會工作,因爲視圖控制器實際上並沒有被推到這一點。該場景是用戶導航回來的時候。 – era 2013-04-05 08:09:05

+1

這個方法在用戶導航不在用戶推送另一個視圖時被調用,因此你必須聲明'viewController.hidesBottomBarWhenPushed = YES;'2次。首先在'viewDidLoad'方法中,第二個在'viewWillAppear'方法中。 – Dilip 2013-04-05 09:03:38

+0

我試圖設置視圖中的屬性也沒有加載..但仍然在那裏的標籤欄。 – era 2013-04-05 10:00:27

0

將這個當你點擊後退按鈕

[self.tabBarController.tabBar setHidden:YES]; 

[UIView animateWithDuration:0.5 
        animations:^{ 
         self.tabBarController.tabBar.frame = CGRectMake(self.tabBarController.tabBar.frame.origin.x, self.tabBarController.tabBar.frame.origin.y+self.tabBarController.tabBar.frame.size.height, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height); 
       } 

我有另一個答案...

將在所有的ViewController這兩種方法和管理BOOL變量是self.hidesBottomBarWhenPushedYESNO按您的要求

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.hidesBottomBarWhenPushed = YES; 
} 
- (void)viewDidDisappear:(BOOL)animated 
{ 
    self.hidesBottomBarWhenPushed = NO; 
} 
+0

我也試過。事情是你可以隱藏標籤欄,它留下一個空的空間在底部。當我試圖將視圖框架設置爲全屏時,它無效。 – era 2013-04-05 09:36:08

+0

正如你所說,首先firstview有底部欄,然後推它會隱藏嗎?並從推viewController彈出時,然後它應該隱藏......這是你的要求或米丟失任何 – 2013-04-05 09:42:47

+0

firstview(有底部欄) - > secondview(隱藏底部欄) - > thirdview(有底部欄) 然後即時彈出第三個視圖和導航回到第二個視圖底部欄是在那裏..我需要擺脫它。如果我按照你的建議在底部留下了一個空白空間。 – era 2013-04-05 09:59:27

0

取決於你的應用程序的設計,你可以設置一箇中心對象作爲導航控制器的委託。並隱藏/顯示標籤欄。這個問題hidesBottomBarWhenPushed but when popped也提供了一個解決方案,但我不喜歡。順便說一下,當用戶瀏覽到第二個或更深層次時,再次顯示底部欄並不常見。

0

您可以在標籤欄控制器上顯示第二個視圖控制器。如果你想要第二個視圖控制器有一個導航欄,你可以把它放在一個新的導航控制器。

如果這樣不能解決您的問題,您可以構建自定義選項卡欄控制器,以便它可以位於導航控制器中。您可以將第二個視圖控制器推送到該導航控制器。要創建自定義標籤欄控制器,您可以參考Apple Documentation on Creating Custom Container View Controllers。我認爲它適用於iOS 5及更高版本。

相關問題