Mam kontroler nawigacyjny z 4 elementami paska kart. Każdy ma kontroler nawigacyjny w środku. Chcę mieć możliwość zmiany numeru znacznika czwartej karty, kiedy otrzymuję powiadomienie push, bez względu na to, w którym widoku lub karcie jestem. Muszę użyć automatycznego układu, więc nie mogę użyć żadnego programowego rozwiązania wewnątrz delegata aplikacji . Zacząłem projekt od jednego szablonu widoku.Aktualizuj znaczek nie wybranej zakładkiBarItem w Swift
Próbowałem przejść do żądanej karty, zmienić wartość znaczka i wrócić, ale oczywiście to nie zadziałało. Wygląda na to, że tabBarController zawiera tylko odniesienia do bieżącego elementu paska karty.
var current = self.tabBarController?.selectedIndex
self.tabBarController?.selectedIndex = 3
self.navigationController?.tabBarItem.badgeValue = "34"
self.tabBarController?.selectedIndex = current!
Schludnie i czysto! Dziękuję Ci bardzo! Widziałem, że w Obj-C zostało to zrobione przy użyciu objectAtIndex (index), ale nie mogłem znaleźć skąd go nazwać. Jeszcze raz dziękuję! – pinolo
@Kampai, w jaki sposób należy to zmienić, aby zaktualizować ikonę znaczka w delegacie aplikacji? Nie mogę zrobić self.tabBarController z tego miejsca? – user2363025
@ user2363025: Musisz pobrać 'rootViewController', aby zaktualizować znaczek z' AppDelegate'. W ten sposób 'let rootViewController = self.window? .rootViewController as! UITabBarController! let tabArray = rootViewController? .tabBar.items jako NSArray! let tabItem = tabArray.objectAtIndex (1) as! UITabBarItem tabItem.badgeValue = "34" ' – Kampai