2010-02-26 81 views
2

我試圖找出編程方式,如果我的應用程序中的特定標籤欄項目有徽章。iPhone:從uitabbaritem讀取徽章值問題

當我在調試時,在視覺上,我可以清楚地看到它的確如此。但是,當我在有問題的viewController中運行此代碼:

UITabBarItem* thisVCsTabBarItem = self.tabBarItem; 
NSString* badgeValue = thisVCsTabBarItem.badgeValue; 

... badgeValue爲零。當我在調試器中檢查這個VCsTabBarItem時,它的_badgeValue成員是零。

這是怎麼回事?我是否應該嘗試從標籤欄項目中讀取此值做不同的事情?

謝謝。

+1

這應該工作。你確定self.tabBarItem正在返回你認爲它的對象嗎? – Don 2010-02-26 23:25:58

+0

這是一個很好的問題。它有正確的標題,雖然圖像沒有設置...顯然,它是設置,如果你看看屏幕上的標籤欄。 因此,也許它是實例化一個新的標籤欄項目,即使已經存在? (我知道一個已經存在了,因爲我在代碼中設置了它......這就是爲什麼我有它的徽章!) – 2010-02-27 00:00:24

回答

1

我做這樣的事情了下載標籤:

for (UITabBarItem* item in self.tabBarController.tabBar.items) { 
    if (item.tag == 3) { 
     if (downloadCount > 0) { 
      item.badgeValue = [NSString stringWithFormat: @"%d", downloadCount]; 
     } else { 
      item.badgeValue = nil; 
     } 
    } 
} 

我不認爲你應該直接訪問tabBarItem。最好在tabBarController的物品列表中找到您的物品。

+0

這裏是文檔所說的:「默認值是一個標籤欄項目,顯示視圖控制器的標題,當你第一次訪問這個屬性時,UITabBarItem被創建,因此,如果你沒有使用標籤欄控制器,你不應該訪問這個屬性。但是因爲我使用了一個標籤欄控制器,這意味着對我來說訪問它沒有任何問題。你是否知道文檔中的其他內容表明直接訪問 - [UIViewController tabBarItem]是一個問題?謝謝。 – 2010-03-01 02:16:46

2

看一些代碼,我使用UITabBarItembadgeValue財產,我看到self.tabBarItem.badgeValue回報nilself.navigationController.tabBarItem.badgeValue返回正確的值。這可能嗎?

事情是自動完成實際上給了我tabBarItemself。因爲這個容易犯錯誤。