2013-03-03 63 views
0

我試圖檢索顯示指定選項卡的值。它之前在工作,並因某種原因停止了?下面的代碼中的int current_badge =行是獲取徽章值並返回零的位置,而不管徽章實際值是什麼。我處於一個視圖控制器,它被一個uitabcontroller隔離。任何人有任何想法我做錯了什麼?iOS - 從選項卡中檢索到不正確的徽章值

更新:這似乎是因爲我在一個tab控制器的viewcontroller。將相同的代碼移動到標籤視圖控制器中,並且工作正常。有沒有更好的方法來確定標籤控制器中的徽章值時,它被找出來了嗎?

-(void)badgeUpdate:(int)tab:(int)dayspan 
{ 
    // getting the current badge amount 
    int current_badge = [[[super.tabBarController.viewControllers objectAtIndex:tab] tabBarItem].badgeValue intValue]; 

    // testing for badge level 
    if (current_badge > 0) 
    { 
     // testing for updates on tab for dayspan or longer 
     int updates_waiting = [self updatesWaitingCheck:tab:dayspan]; 
     if (updates_waiting > 0) 
     { 
      // setting new badge level on tab 
      [[[[[self tabBarController] viewControllers] objectAtIndex:tab] tabBarItem] setBadgeValue:[NSString stringWithFormat:@"%d", updates_waiting]]; 
     } 
     else 
     { 
      // turning off badge display 
      [[[[[self tabBarController] viewControllers] objectAtIndex:tab] tabBarItem] setBadgeValue:nil]; 
     } 
    } 
} 
+0

這不是一個xcode問題,它是一個iOS問題,所以我更改了標籤和標題。 – 2013-03-03 17:04:52

+0

感謝您的更正 – Grymjack 2013-03-03 17:16:06

回答

1

該選項卡的控制器很可能在您切換時解除分配。我會建議移動邏輯來確定當前計數從視圖層,並進入一個更高級別的控制器,持續所有標籤。否則,你會遇到你看到的問題。大多數情況下,如果您在查看對象而不是控制器或模型中查找數據值,那麼您正在對付框架,並且會遇到像這樣的問題。

+0

我有TabBarController類的代碼工作正常。當我進行模式轉換到屏幕時,它停止工作。當我退出這個屏幕回到標籤控制器,它工作正常。它沒有被釋放,因爲當我展開segue時,我沒有任何問題返回到tab控制器。所以我想我的問題是,當我陷入另一個視圖時,如何獲得標籤的徽章值? – Grymjack 2013-03-03 17:13:13

+1

控制器仍然可以在低內存條件下解除分配,然後從串行狀態重新創建;類似於應用切換的工作速度。不活動的控制器是否保持分配可能會根據其運行的設備,iOS的版本以及用戶是否在後臺播放音樂而改變。這就是爲什麼最好將這些數據存儲在像應用程序委託那樣的高級持久對象中。 (請注意,我不是_suggesting_應用程序代表是這個的地方 - 組織這取決於你) – 2013-03-03 17:21:17

+0

似乎奇怪的代碼不會拋出嘗試訪問徽章值的訪問錯誤呢?那麼,你的建議是將這些代碼移回tab控制器,並在退出segue時運行它? – Grymjack 2013-03-03 17:27:38

相關問題