2017-07-18 50 views
1

的TabBar項目我在我的UITabBarController 5 UIViewController的,但我需要他們的表演4的TabBar所以我想去年的TabBar項目從的UITabBarController刪除。如何刪除SWIFT 3

self.tabBarController?.tabBar.items?.removeLast() 

但我得到這個錯誤。

直接修改的標籤欄控制器管理的標籤欄是不是 允許

那麼,怎樣才能從我刪除的TabBar最後的TabBar項目?

+0

後,我看了您的評論認爲答案,我窗臺不明白你想要什麼。 –

回答

0

你應該操縱viewcontrollers中的TabBar控制器的陣列。 試試這個。

if let tabBarController = self.tabBarController { 
    let indexToRemove = 4 
    if indexToRemove < tabBarController.viewControllers?.count { 
     var viewControllers = tabBarController.viewControllers 
     viewControllers?.remove(at: indexToRemove) 
     tabBarController.viewControllers = viewControllers 
    } 
} 
+1

而不是複製,粘貼[這個答案](https://stackoverflow.com/a/28384731/5501940),你應該評論它... –

+0

我想,但我不具備足夠的代表。 –

1

對於從tabBarController?刪除視圖控制器,你應該簡單地實現:

tabBarController?.viewControllers?.removeLast() 

假設您刪除了最後一個控制器(標籤)。

它與viewControllers

由選項卡欄 界面中顯示的根視圖控制器的數組。

很明顯,你可以刪除和控制,例如,用於去除第一控制器:

tabBarController?.viewControllers?.remove(at: 0) 

更新:

首先,我需要開放第五視圖 - 控制我會不 的TabBar表現出來。用戶不能去第五個標籤欄。只有我可以導航用戶。因此造成的,我試圖做到這一點 。

爲了實現這一點,你應該做的是讓你的故事板被構造爲:

enter image description here

考慮到第一個視圖控制器(應該呈現的TabBar控制器中的)你不想讓它出現在的TabBar視圖控制器。

+0

我只需要從tabbar –

+0

刪除最後一項不viewcontroller請詳細說明,如果從tabbar的最後一項已被刪除,那麼您如何導航到其viewcontroller?默認情況下,從viewControllers數組中刪除一個視圖控制器應該自動刪除它在tabbar中的項目。 –

+0

我不會再次瀏覽此視圖控制器。所以我只需要從tabbar刪除最後一項不viewcontroller –

0

要移除標籤欄項目,其中你知道的參考或位置,你可以這樣來做:

tabBarController?.viewControllers?.remove(at: 4) 
+0

請注意,如果'tabBarController?.viewControllers?'包含少於5個視圖控制器,應用程序將會崩潰,那麼在沒有任何檢查的情況下實現這種操作是有點危險的。 –

+0

正如我所說,如果你知道你正在刪除的特定控制器的引用,你可以使用它。 –