2016-05-30 80 views
6

我試圖更改標籤欄項目的徽章但沒有成功。我明白標籤欄控制器負責控制器標籤欄。爲什麼標籤欄項目的徽章沒有更改

然而,在標籤欄本身的一些內容可以通過視圖控制器來管理,如在我的代碼徽章

我想這是鑑於沒有負載

self.tabBarItem.badgeValue = "3" 

,但沒有出現在徽章

,然後我想:

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

這沒我不知道爲什麼第二個代碼不起作用,這與使用導航控制器而不是導航項目更改導航控件的標題相同。但我不知道爲什麼第一個代碼沒有工作

這是我的應用程序的hiechy,和我在這是在球隊選項卡中的第一個視圖控制器TeamsTableViewController這樣

enter image description here

+0

這是一個後臺進程? –

+0

@Sherin no .... – sarah

+0

你有沒有嘗試dispatch_async(dispatch_get_main_queue()用於更新用戶界面? –

回答

0

試試這個

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

在您的情況,這是控制tabBarItem不是TableViewController導航控制器,因爲每個TabBarController具有viewControllers的數組,這些viewControllers的每一個與tabBarItem關聯。在你的情況下,tabBarController有兩個viewControllers,它們是:

  1. 隊導航控制器
  2. 播放器視圖控制器

所以團隊視圖導航控制器是視圖控制器,控制器標籤欄項目。

這樣做應該解決您的問題

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

我知道這個問題是很老了,但無人接聽。正如William所說,您的導航控制器是可以控制TabBarItem的控制器。所以爲了訪問它,你可以繼承你的UINavigationController並使TabBarItem成爲該類的一個屬性。然後,您可以通過該屬性訪問TabBarItem。例如:

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

,並從下面的TableController訪問它:

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