2016-05-30 37 views
6

Sekme çubuğu öğesinin rozeti değiştirmeye çalışıyorum ama başarı yok. Sekme çubuğu denetleyicisinin denetleyiciden sekme çubuğundan sorumlu olduğunu anladım.neden sekme çubuğu öğesinin rozeti değiştirilmiyor

Ancak, sekme çubuğunun kendisinde bazı içerikler böyle benim kod rozet

olarak görünümü denetleyicisi tarafından yönetilebilir ben bu görünümde yük

self.tabBarItem.badgeValue = "3" 

yaptım çalıştı ama hiçbir şey göründüğü rozet

ve sonra denedim:

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

etmedim ki Ne işe yaramazsa, ikinci kodun neden işe yaramadığını biliyorum, navigasyon kontrol cihazını kullanarak navigasyon kontrol cihazını kullanarak navigasyon kontrol ünitesinin başlığını değiştirmek aynı şeydir. ama ilk kod

işe yaramadı neden ben bu benim app hiechy olduğunu bilmiyorum ve ben ekipleri sekmede ilk görünüm denetleyicisi olan TeamsTableViewController kadar yapıyorum

enter image description here

her TabBarController bu viewControllers her biri viewControllers bir dizi vardır ve çünkü
+0

bu bir arka plan sürecidir? –

+0

@Sherin no .... – sarah

+0

UI'nin güncellenmesi için dispatch_async (dispatch_get_main_queue() öğesini denediniz mi? –

cevap

0

sizin senaryoda bu

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

deneyin O tabBarItem değil TableViewController kontrol eden navigasyon kontrolörü olduğu bir tabBarItem ile ilişkilidir. O kontrolörleri

  1. takım navigasyon kontrolörü
  2. oyuncu görünümü kontrolörü

Yani takım görünümü navigasyon kontrolörü olan görünümü denetleyicisi: Senin durumunda, TabBarController iki viewControllers vardır sekme çubuğu öğesi. Bunu yapmak

Bu soru oldukça eski ama cevapsız olduğunu biliyoruz sorununuzu

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

çözmek gerekir. William'ın belirttiği gibi, navigasyon kontrol cihazınız TabBarItem üzerinde kontrol sahibi olanıdır. Bu nedenle, UINavigationController'ınızı alt sınıflara ayırabilir ve TabBarItem'i bu sınıfın bir özelliği haline getirebilirsiniz. Daha sonra bu özellik aracılığıyla TabBarItem'e erişebilirsiniz.

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

ve aşağıdaki ile TableController erişimi ondan: Örnek için

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