0

我有這種情況的故事板;UITAbBarController作爲主UISplitController和showDetail:

My Storyboard

根視圖控制器是具有UISplitViewController:

  • MASTER:一個的UITabBarController
    • 0 - >的UINavigationController - > ...其它ViewControllers
    • 1 - > UINavigationController - > ...其他ViewControllers
  • 詳細信息:一個UINavigationController - >一DetailViewControler

有了這個層次從去年的ViewController的SEGUE showDetail在主到導航控制器詳情不起作用,因爲細節是模態呈現在倒塌的環境,而不是用推動力呈現它。 我覺得這個行爲來自Tab Bar Controller,因爲它不像UINavigationController那樣是容器。事實上,如果我刪除標籤欄並將導航設置爲分割視圖控制器的主控,它的工作原理與平常一樣。

如何使用分隔視圖控制器Master等標籤欄並在摺疊環境中獲得showDetail segue的正確行爲?

P.S .:對於正確的行爲,我的意思是在橫向緊湊環境(iPhone 6 plus Portrait)中推動主導航控制器中的細節。

+0

將Master-side視圖控制器的segue直接設置爲詳細視圖控制器,而不是其中嵌入了詳細信息VC的導航控制器。 – pbasdf

+0

它不起作用:細節以模態方式呈現,並且不會在主控制器的導航控制器堆棧中推送。 – Andorath

+0

嘿,@Andorath你能弄清楚這一點嗎?我有同樣的問題。 – animaonline

回答

0

我解決了這個問題,壓倒一切的UISplitViewControllerDelegate的這些方法和內部實現他們所有的行爲,我從SplitViewController想:

  • primaryViewControllerForCollapsingSplitViewController
  • splitViewController:collapseSecondaryViewController:ontoPrimaryViewController
  • primaryViewControllerForExpandingSplitViewController
  • splitViewController :separateSecondaryViewControllerFromPrimaryViewController:

我建議你看一看UISplitViewController文檔,因爲它解釋了很好的分割控制器的行爲:

UISplitViewController Documentation

你可以找到你所需要的是什麼:

拆分視圖控制器在尺寸類別在水平正常和水平緊湊之間切換時執行摺疊和展開轉換。在這些轉換過程中,分割視圖控制器將更改其顯示其子視圖控制器的方式。當從水平常規變爲水平緊湊時,分割視圖控制器將一個視圖控制器摺疊到另一個視圖控制器上。當從水平緊湊的背面改變爲水平的正面背面時,它再次展開界面並根據顯示模式顯示其子視圖控制器中的一個或兩個。 轉換到摺疊界面時,分割視圖控制器與其委託一起使用以管理轉換。在摺疊轉換結束時,分割視圖控制器通常僅顯示其主視圖控制器中的內容。您可以通過在分割視圖控制器委託中實施primaryViewControllerForCollapsingSplitViewController:方法來更改此行爲。您可以使用該方法來指定輔助視圖控制器或完全不同的視圖控制器 - 可能更適合在水平緊湊環境中顯示。如果要對視圖控制器和視圖層次結構執行任何其他調整,還可以在委託中實現splitViewController:collapseSecondaryViewController:onPrimaryViewController:方法。 展開過程通過要求委託指定哪個視圖控制器成爲主視圖控制器併爲委託人提供執行過渡本身的機會來顛倒摺疊過程。如果實現用於摺疊拆分視圖接口的委託方法,則還應該實現primaryViewControllerForExpandingSplitViewController:和splitViewController:separateSecondaryViewControllerFromPrimaryViewController:用於擴展該接口的方法。如果您沒有實現任何方法,則分割視圖控制器會提供默認行爲來處理摺疊和展開轉換。 有關用於管理摺疊和展開轉換的方法的更多信息,請參閱UISplitViewControllerDelegate協議參考。

希望這可以幫助你。

PS:對不起英文不好。