我有TabBarcontroller,带有5个viewcontroller" A"," B"," C"," D"," E& #34 ;.但我需要确定运行时的顺序取决于API响应。 对于前有一段时间我需要展示" A"," D"," C"," E"," B"即,以随机顺序,或者有时我只需要显示" D"," B"," C"," A"
有没有办法处理这种情况?
我正在使用Swift 3,但即使我得到一些逻辑或可能的方式,它也可以帮助解决我的问题。
我使用storyboard创建了TabBar和viewcontroller。
答案 0 :(得分: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并对其进行操作。
答案 1 :(得分:0)
你没有包含代码,所以回复有点难。
我要做的是,只要你有了新订单,就创建一个新的TabBarController并让新的TabBarController覆盖现有的TabBarController。
为了使用户更合乎逻辑,您可以将用户移动到同一个VC" A" " B" " C" ..(按新订单)或让用户留在(替换)屏幕(第一/第二等)
答案 2 :(得分: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 ] ]
}
}