如何在 TabBarcontroller 运行 时间安排标签栏项目?
How to arrange tabbar item at run time in TabBarcontroller?
我有 5 个 viewcontroller "A"、"B"、"C"、"D"、"E" 的 TabBarcontroller。但是我需要在运行时决定顺序取决于 API 响应。
例如。有时我需要显示 "A"、"D"、"C"、"E"、"B" 即随机顺序,或者有时我只需要显示 "D"、"B"、"C"、"A"
有什么办法可以处理这种情况吗?
我正在使用 Swift 3,但即使我得到了一些逻辑或可能的方法,它也可以帮助解决我的问题。
我使用故事板创建了 TabBar 和 viewcontroller。
你没有包含代码,有点难回复
我会做的是,一旦您有了新订单,就创建一个新的 TabBarController 并让新的覆盖现有的。
为了让用户更符合逻辑,您可以将用户移动到相同的 VC "A" "B" "C" ..(以新顺序)或者让用户留在(替换的)屏幕上(first/second 等)
将您的 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 ] ]
}
}
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 并对其进行操作。
我有 5 个 viewcontroller "A"、"B"、"C"、"D"、"E" 的 TabBarcontroller。但是我需要在运行时决定顺序取决于 API 响应。 例如。有时我需要显示 "A"、"D"、"C"、"E"、"B" 即随机顺序,或者有时我只需要显示 "D"、"B"、"C"、"A"
有什么办法可以处理这种情况吗?
我正在使用 Swift 3,但即使我得到了一些逻辑或可能的方法,它也可以帮助解决我的问题。
我使用故事板创建了 TabBar 和 viewcontroller。
你没有包含代码,有点难回复
我会做的是,一旦您有了新订单,就创建一个新的 TabBarController 并让新的覆盖现有的。
为了让用户更符合逻辑,您可以将用户移动到相同的 VC "A" "B" "C" ..(以新顺序)或者让用户留在(替换的)屏幕上(first/second 等)
将您的 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 ] ]
}
}
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 并对其进行操作。