2017-06-03 113 views
2

好的。我實際上沒有看到如何在任何地方做到這一點。這可能是一個「你不能從這裏到達」的問題。或者「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背後被我的應用佔據。

有沒有適當的方法來做到這一點?

回答

0

好的。我想出瞭如何去做。

我沿着導航控制器路徑爬行;對於不在更多空間中的物品而言效果不錯。

我固定它從標籤欄控制器向前爬行,而不是:

self.tabBarController?.viewControllers?[MySelectionIndex].tabBarItem.image = self.tabBarImage 
self.tabBarController?.viewControllers?[MySelectionIndex].tabBarItem.selectedImage = self.tabBarImage 
1

您可以使用通知並將字典中的圖像作爲通知對象傳遞。然後,您可以一次獲得具有不同鍵值的不同tabBarImage。

+0

謝謝!我會在哪裏發送通知? MoreTabBarController? –

+1

您可以從任何地方發送通知,而不僅僅是MoreTabBarController。由於可以從每個控制器接收通知,因此可以在該通知上添加觀察者。 – LNT

相關問題