2009-09-08 69 views
2

任何想法,爲什麼這個工程:UITabBar標誌狀態

[[[[[self tabBarController] tabBar] items] objectAtIndex:2] 
              setBadgeValue:@"Hello"]; 

但是,這不?

[[self tabBarItem] setBadgeValue:@"Hello"]; 

我寧願不必提供(在上面的代碼2)顯式的標籤欄的索引。此外,有沒有辦法從視圖控制器中獲取標籤欄索引的情況下,第一個片段是唯一的方法來做到這一點?

謝謝。

回答

0

是在tabBarItem你是指實際存在的tabBarViewController的項目?如果它不是那麼你的問題。你可以知道你的viewController的索引,因爲你在你的tabBarviewCOntroller中設置視圖控制器時指定了順序,所以如果你在tabBarViewController中設置了viewController,那麼它的按鈕索引就是0.

隨着你的評論你的問題變得更清楚,我,作爲答覆指出,也許一旦你設置的UITabBarController的viewController,它抓住了tabBarItem後來改變到的viewController財產不得到由tabBarViewController(我可能是錯的,這是一個猜測)

更新
+0

你能澄清一下嗎?我的印象是,如果您將視圖控制器添加到IB中的選項卡欄中,則視圖控制器中的tabbaritem將自動設置。變量tabBarItem絕對不是零,它有正確的標題,但它不是通過tabBar items數組訪問的地址。 – 2009-09-08 20:45:36

+0

剛剛在Apple文檔中發現了這一點:「標籤欄項目通過其相應的視圖控制器進行配置。要將標籤欄項目與視圖控制器相關聯,請創建UITabBarItem類的新實例,併爲視圖控制器進行相應配置,以及將其分配給視圖控制器的tabBarItem屬性如果你沒有爲視圖控制器提供一個自定義的標籤欄項目,視圖控制器將創建一個默認項目,其中不包含圖像和來自視圖控制器標題屬性的文本。想想我只是通過索引來訪問它,而不是創建一個索引。 – 2009-09-08 20:48:46

+0

啊,我看到你現在在做什麼,看起來好像你給的例子應該工作......我想到可能發生的事情是,一旦你分配一個viewController到你的tababrcontroller它捕獲該tabbaritem和更高版本的viewController tabBarItem屬性不更新他的按鈕,因爲tabBarViewController不檢查更新.. – Daniel 2009-09-08 21:15:45