2010-05-18 13 views
10

Mam tabBarController skonfigurować w AppDelegate i mieć kilka UIViewControllers z Nav kontrolerów. W jednym z elementów TabBar, po naciśnięciu kilku UIViews chcę zaktualizować element badgeValue innego elementu TabBar.Najlepszy sposób na aktualizację badgeValue z UITabBarController z UIView

Jaki jest najlepszy sposób na zrobienie tego? Jedyny sposób, w jaki naprawdę mogę myśleć, to NSNotification i magazyn singleton dla wartości, ale wydaje się, że dużo pracy za coś prostego, i nie mam pojęcia o NSNotifications.

Miałem dzikie domysły na coś w stylu super.tabBarController.otherView.tabBarItem.badgeValue = @ "1" (jak ustawić tę kartę jest wybrany w podobny sposób), ale nie jestem zaskoczony, że to nie działa .

Dzięki

Odpowiedz

34

Dzięki alku83 który wskazał mi w dobrym kierunku kod jest:

0

nie mam kodu na strony teraz, ale powinno to być coś bardziej jak

...otherViewController.tabBarItem.badgeValue = 1; 
+0

prawda, ja zmieniłem oryginalne pytanie, nie zrobił” t pomóc to naprawić :( – Rudiger

+0

Upewnij się, że ustawiasz znaczek na wartość całkowitą, a nie wartość NSString.Jeśli to nadal nie działa, możesz utworzyć IBOutlet dla TabBarItem i odwołać się w ten sposób. –

+0

to w AppDelegate, aby upewnić się, że działa i go zaakceptować ts ciąg znaków. Nie jestem tak pewny co do IBOutlet, ponieważ dodaję wszystko do stalówki za pomocą kodu, IBOutlet działałby tylko wtedy, gdyby został ustawiony w końcówce – Rudiger

6

Używam Xcode 4.5 z Storyboards i iOS 6, więc odpowiedź mogła ulec zmianie, ponieważ została pierwotnie opublikowana.

Najpierw trzeba wejść do zakładki Bar Controller tak:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController; 

Następnie można ustawić odznakę tak:

[[tabController.viewControllers objectAtIndex:1] tabBarItem].badgeValue = @"New!"; 
Powiązane problemy