2017-04-16 98 views
1

我有一個標籤欄控制器,它有兩個項目連接到兩個視圖控制器(說A &乙)現在我想添加第三個視圖控制器(說C)。但我不想在標籤視圖中添加第三個圖標。當用戶選擇第二個圖標時,它應該呈現B或C,具體取決於用戶是否已登錄。如何將多個視圖連接到swift中的單個標籤欄項目?

Storyboard Setup

+0

如果有人反對投票至少告訴我你爲什麼反對投票? –

+0

你可以添加你迄今爲止所做的事嗎? – Rahul

+0

@IqbalInzamam:當人們在尋求幫助之前,似乎還沒有試圖想出自己的解決方案時,問題通常會在Stackoverflow上被拒絕。你應該嘗試描述你的想法,以便在你的問題中採用一種可能的方法,並特別詢問爲什麼這種方法不起作用或者有更好的選擇。 – Mischa

回答

4

只要創建爲要顯示根據上下文不同意見的標籤欄項目的另一個視圖控制器。我們稱之爲RouterViewController。然後將所需的信息傳遞給RouterViewController以決定將哪個視圖控制器顯示出來,並在那裏實現必要的邏輯。

RouterViewController你現在可以呈現你想要的任何視圖控制器(沒有動畫)。有很多方法可以做到這一點,例如:

  • 讓您RouterViewControllerUINavigationController一個子類,並動態設置其屬性rootViewController
  • 使您的RouterViewController a 容器視圖控制器並相應地嵌入所需的視圖控制器。
  • 從您的RouterViewController以模態(無動畫)呈現視圖控制器。 (因爲呈現模式視圖控制器是用於其他目的,我個人會打消這個選項。)

+1

謝謝。我正在嘗試你建議的第一種方式。所以我添加了一個導航控制器作爲選項卡控制器的第二項。然後我無法理解在哪裏設置導航控制器的rootViewController。它在tabBarController的viewDidLoad中,以及如何設置它?請幫幫我。 –

+1

我懷疑你正在使用故事板?如果是:1.將導航控制器添加爲選項卡欄控制器的第二個選項卡。 2.創建「UINavigationController」的子類並將其稱爲「RouterViewController」。 3.選擇故事板中的導航控制器,並將其類設置爲「RouterViewController」。 4.在'RouterViewController'的'viewDidLoad()'方法中設置這樣的根視圖控制器:'viewControllers = [theViewControllerYouWantToShow]'。 – Mischa

+1

這可能是一個非常愚蠢的問題。對不起,我對ios很陌生。我按照你的說法做了,我如何通過哪種類型的segue連接UINavigationController和UIController(B&C)。 我做了下面的遊戲 if(...){ viewControllers = [FirstViewController()] }否則{ viewControllers = [SecondViewController()] } 但是當我點擊第二個標籤的圖標,它加載與黑屏 導航UI我已附加在故事板圖問題 –

相關問題