2012-01-01 82 views
0

在我的應用程序我有一個選項卡欄控制器,啓用多個選項卡。一個這些標籤的是在下面的圖片所表示的之一:視圖與故事板之間的轉換

enter image description here

通過按下「i」按鈕,所述第二視圖被打開。按下「返回」按鈕,第一個視圖再次打開。這些轉換是通過Storyboard Segues進行的。

問題是,如果我使用Segue的Modal風格,Tab欄會消失。 我的問題是:只有推式風格Segues可用於Tab欄的情況下?有沒有一種方法來實現,而不是Modal轉換,並保持標籤欄與故事板可見?

由於提前,yassa

回答

0

這是一種同樣的情況與UINavigationController。使用除push之外的任何類型的seque都不會保留導航欄或選項卡欄。 UINavigationController的解決方法是將詳細視圖嵌入到自己的UINavigationController中。如果你仔細想想,這是有道理的。模式化seque的目的是向用戶展示一些可行的,也許是無關緊要的信息。從UX理論講,你通常只會提供一些用例的方法。

對於標籤欄,使用模態seque並沒有意義,同時希望標籤欄保持可見狀態,因爲這樣可以讓用戶遠離模態視圖。有了這個說法,你可以嘗試讓你的模態視圖縮短高度,這樣當它被推入堆棧時它不會遮住標籤欄。這是未經測試的,但在我看來這似乎是可能的。

+0

謝謝您的回答。我不明白導航控制器的解決方法,因爲模式segues無法連接到導航控制器。關於你對標籤欄的建議,我無法改變模態視圖的大小,因爲這是控制器的唯一視圖,它必須是整個屏幕大小......其實我使用委託與'[自我dismissViewControllerAnimated:YES completion:nil];'從模態視圖返回並重新獲得標籤欄。但這只是問題的一部分解決方法:任何其他建議將非常感謝! – yassassin 2012-01-02 10:04:06

+0

點擊用作模式的視圖控制器,然後進入編輯器 - >嵌入導航控制器。這會讓你的導航控制器進入模態視圖。但是,您無法將主標籤欄添加到模態視圖。它根本不符合模式視圖控制器的範例和正常用法。 – 2012-01-02 22:04:34

0

使用自定義的segue來執行此操作。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html

,並使用pushViewController而不是presentModalViewController。

- (void)perform 
{ 
    // Add your own animation code here. 

    [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO]; 
} 

變化

- (void)perform 
{ 
    // Add your own animation code here. 

    [self.sourceViewController.navigationController pushViewController:destination animated:NO]; 
}