在更多ViewController表中动态更新选项卡栏项目

在更多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。

+0

谢谢!我会在哪里发送通知? MoreTabBarController? –

+1

您可以从任何地方发送通知,而不仅仅是MoreTabBarController。由于可以从每个控制器接收通知,因此可以在该通知上添加观察者。 – LNT