2016-05-30 13 views
6

Próbuję zmienić znaczek elementu paska kart, ale bez powodzenia. Zrozumiałem, że kontroler paska zakładek jest odpowiedzialny za kontroler na pasku kart.dlaczego znaczek elementu paska karty nie został zmieniony

jednak niektóre treści w samym pasku kart może być zarządzany przez kontroler widoku, takie jak odznaki

w moim kodzie próbowałem to na uwadze nie obciążenie

self.tabBarItem.badgeValue = "3" 

ale nic w pojawia odznaka

a następnie próbowałem:

self.tabBarController?.tabBarItem.badgeValue = "3" 

który nie zrobił 't work neigher, cóż, wiem, dlaczego drugi kod nie zadziałał, to jest tak samo jak zmiana tytułu kontrolki nawigacji przy użyciu kontrolera nawigacyjnego, a nie elementu nawigacyjnego. ale nie wiem dlaczego pierwszy kod nie działa

to hiechy mojej aplikacji, a robię to w TeamsTableViewController który jest pierwszym kontrolerem widok w zakładce drużyny

enter image description here

+0

jest to proces w tle? –

+0

@Sherin no .... – sarah

+0

wypróbowałeś dispatch_async (dispatch_get_main_queue() do aktualizacji interfejsu użytkownika? –

Odpowiedz

0

Spróbuj

var cart: UITabBarItem = super.tabBarController.viewControllers[yourIndex].tabBarItem() 
cart.badgeValue = "3" 
4

w twojej sytuacji, to jest kontroler nawigacyjny, który kontroluje tabBarItem nie TableViewController, ponieważ każdy TabBarController ma tablicę viewControllers, a każdy z tych viewControllers jest powiązany z tabBarItem. W twoim przypadku, TabBarController ma dwa viewControllers, którymi są:

  1. zespół kontroler nawigacyjny
  2. Gracz widok kontroler

Więc zespół kontroler widoku nawigacji kontroler pogląd, że kontrolery element paska kart.

Rozwiązanie to powinno rozwiązać problem

self.navigationController?.tabBarItem.badgeValue = "3" 
1

Wiem, że to pytanie jest dość stary, ale bez odpowiedzi. Jak twierdzi William, twój kontroler nawigacji to ten, który ma kontrolę nad TabBarItem. Aby uzyskać do niego dostęp, możesz podklasować swój UINavigationController i uczynić TabBarItem właściwością tej klasy. Następnie możesz uzyskać dostęp do TabBarItem za pośrednictwem tej właściwości. Na przykład:

@interface MyCustomNavController : UINavigationController 
@property(weak, nonatomic)IBOutlet UITabBarItem *theTabBarItem; 
@end 

iz dostępem TableController niego z poniższym:

MyCustomNavController* navController=(MyCustomNavController*)self.navigationController; 
[email protected]"3"; 
Powiązane problemy