在更多ViewController表中动态更新选项卡栏项目
问题描述:
好的。我实际上没有看到如何在任何地方做到这一点。这可能是一个“你不能从这里到达”的问题。或者“Holy#@ $!这真是一件令人厌恶的事情,它应该在森林后面拍摄!”。在更多ViewController表中动态更新选项卡栏项目
我有一个标签式的Swift 3 iOS应用程序,它可以在页面状态发生变化时动态更新所选页面的标签栏图像。
我做那种像这样:
if let navController = self.navigationController as? MyNavController {
navController.tabBarItem.image = navController.tabBarImage
navController.tabBarItem.selectedImage = navController.tabBarImage
}
的tabBarImage实际上是一个计算属性。这段代码在UI回调中调用,该状态在状态改变时更新。
This works great。
虽然在MoreViewController中,但并不是那么棒。无论我做什么,这些图像都保持固定不变。
我已经对MoreViewController做了一些探索。我可以在桌面视图和单元格中看到,但是这样的味道会让我的应用在App Review的Blue Meanies背后被我的应用占据。
有没有适当的方法来做到这一点?
答
好的。我想出了如何去做。
我沿着导航控制器路径爬行;对于不在更多空间中的物品而言效果不错。
我固定它从标签栏控制器向前爬行,而不是:
self.tabBarController?.viewControllers?[MySelectionIndex].tabBarItem.image = self.tabBarImage
self.tabBarController?.viewControllers?[MySelectionIndex].tabBarItem.selectedImage = self.tabBarImage
答
您可以使用通知并将字典中的图像作为通知对象传递。然后,您可以一次获得具有不同键值的不同tabBarImage。
谢谢!我会在哪里发送通知? MoreTabBarController? –
您可以从任何地方发送通知,而不仅仅是MoreTabBarController。由于可以从每个控制器接收通知,因此可以在该通知上添加观察者。 – LNT