2010-08-07 9 views

Odpowiedz

11
UITabBarItem *tbi = (UITabBarItem *)self.tabController.selectedViewController.tabBarItem; 
tbi.badgeValue = @"New"; 

Działa również.

0

Zachowaj odwołanie do elementu paska kart, który chcesz zmodyfikować.

EDIT w odpowiedzi na żądanie kodu:
wierzę, że istnieje tylko jedno miejsce w swojej aplikacji, gdzie zaktualizować odznaczenia na pozycji pasku kart. Wystarczy dodać tablicę elementów paska kart (lub oddzielnych elementów paska kart) jako członków tej klasy (w razie potrzeby + właściwości) i zaktualizować elementy bezpośrednio, bez pobierania z listy bieżących elementów paska kart ((UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:1];).

Na przykład, jeśli użytkownik zdecyduje się zachować odniesień do elementów paska narzędzi bezpośrednio (bez tablicy), a następnie kod może wyglądać tak:

// Put the next code right after initiating the tab bar and/or after adding new tab bar items to it... 

self.newsTabBarItem = (UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:1]; 
self.friendsTabBarItem = (UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:2]; 

// etc. 
+0

Czy możesz mi pokazać W kodzie? –

+1

Edytowałem swoją odpowiedź. Sprawdź, czy to ci pomaga. –

1

użyję właściwość NSMutableDictionary na klasy, które posiada kontroler pasek kart, wiążące nazwy karty ze stanowiska i metody do pobierania według nazwy:

-(UITabBarItem*)getTabByName:(NSString*)tabName { 
    return [stTabBarController.tabBar.items objectAtIndex:[[tabDict valueForKey:tabName] intValue]]; 
} 

zainicjować słownika w kodzie konfiguracji dla każdej karcie, ponieważ wiesz, indeks kartę w tym czasie:

[tabDict setValue:[stTabBarController.tabBar.items objectAtIndex:1] forKey:@"myTabName"]; 
15

Jedną z sugestii, którą możesz rozważyć, jest ustawienie tagu na każdym z elementów paska kart. Możesz to zrobić w Kreatorze interfejsów lub podczas tworzenia elementu według kodu. Można wtedy pętla przez kontrolerów widoku w kontrolerze kreskowego Zakładka poszukuje dla jednego z elementu paska zakładka jesteś zainteresowany. Na przykład:

// #define MyTabBarItemTag 999 

for (UIViewController *viewController in stTabBarController.viewControllers) { 
    if (viewController.tabBarItem.tag == MyTabBarItemTag) { 
     viewController.tabBarItem.badgeValue = @"2"; 
    } 
} 
2

wersji Swift:

self.tabBarController?.selectedViewController?.tabBarItem.badgeValue="12"; 
Powiązane problemy