2016-12-14 77 views
1

我有TabBarcontroller 5視圖控制器「A」,「B」,「C」,「D」,「E」。但我需要決定運行時的順序取決於API響應。前者爲 。有時我需要以隨機順序顯示「A」,「D」,「C」,「E」,「B」,或者某時我只需要顯示「D」,「B」,「C」, 「A」如何在運行時在TabBarcontroller中安排tabbar項目?

有沒有辦法處理這種情況?

我正在使用Swift 3,但即使我得到了一些邏輯或可能的方式,它可以有助於解決我的問題。

我創建了使用故事板的TabBar和viewcontroller。

enter image description here

+0

如何創建標籤欄控制器及其視圖控制器? – rmaddy

+0

這個問題很好,但不應該這樣做,因爲人們有肌肉記憶,你的功能會搞砸了。 –

+0

@rmaddy我已經更新了我的問題 – sss

回答

1
if let tabBarController = (self.window?.rootViewController as? UITabBarController) { 
    if var vcArray = tabBarController.viewControllers { 
     //Arrange the array according to your need and set them again. 
     tabBarController.viewControllers = vcArray 
     //Arrange the array according to your need and set them again. 
     var items = tabBarController.tabBar.items 
     tabBarController.tabBar.items = items 
    } 
} 

你將不得不處理selectedViewController。我已經在appdelegate中編寫了上述代碼,但是您可以獲取appDelegate的對象,並在上面的代碼中使用self

另請參閱this瞭解另一種解決方案,您可以通過編程方式創建tabCtrl並對其進行操作。

0

您還沒有包含的代碼,因此它是一個有點難以應對。

我會做的是,只要你有新的訂單,創建一個新的TabBarController,讓新的覆蓋現有的。

爲了讓用戶更符合邏輯,可以將用戶移動到相同的VC「A」「B」「C」(按照新順序),或讓用戶留在(替換)屏幕上(第一/第二等)

+0

這是可能的,如果在故事板中創建tabbarcontroller? – sss

0

將UITabBarController的viewControllers屬性設置爲新訂購的viewContoller數組。

下面的示例是使您的viewControllers反向排序(從AppDelegate調用)。

if let wTB = (self.window?.rootViewController as? UITabBarController) { 
    if let wVCs = wTB.viewControllers { 
     wTB.viewControllers = [ wVCs[ 4 ], wVCs[ 3 ], wVCs[ 2 ], wVCs[ 1 ], wVCs[ 0 ] ] 
    } 
} 
相關問題