2011-10-25 65 views
0

我的應用程序委託中有一個方法,用於更新應用程序圖標的徽章計數。我希望這種方法能夠更新另一個可以在整個應用程序(比如通知中心)中可見的VC。應用程序委託和VC之間的通信

我該怎麼做?

的方法是這樣的:

- (void) remedyERxInterface:(RSeRxInterface *)eRxInterface 
      didSynchronize:(BOOL)success pendingMessageCounts:(NSDictionary *)pendingMessageCounts { 

    NSInteger messageTotal = 0; 
    NSInteger refillRequests = [[pendingMessageCounts objectForKey:kRSQueuesRefillCount] intValue]; 
    NSInteger problems = [[pendingMessageCounts objectForKey:kRSQueuesProblemCount] intValue]; 
    NSInteger messages = [[pendingMessageCounts objectForKey:kRSQueuesMessageCount] intValue]; 

    if (0) { 
     if (self.eRxModuleInboxMessageCount) { 
      messageTotal = refillRequests + problems + messages; 
     } else { 
      messageTotal = refillRequests + problems + messages + 12; 
     } 
    } else { 
     //Production 
     messageTotal = refillRequests + problems + messages; 
    } 

    [UIApplication sharedApplication].applicationIconBadgeNumber = messageTotal; 
    self.eRxModuleInboxMessageCount = messageTotal; 
} 
+0

爲什麼不使用來自您徽章更新方法的通知中心呼叫? – hotpaw2

+0

聽起來不錯,你能否提供更多細節。 – Jon

回答

2

你提到了一個通知中心。你有沒有考慮過使用NSNotification通過NSNotificationCenter?它是中央實體在不知道誰收聽的情況下廣播信息的理想選擇。您可以使用將被同步調用的回調函數註冊您的視圖控制器。

+0

好的,所以我可以在調用此方法時設置通知,並將interger'messageTotal'傳遞給我的其他VC。我如何在代碼中做到這一點?謝謝 – Jon

+1

如果你看看NSNotification編程指南,它非常全面和直接,你可以傳遞一個包含你想通過的整數的NSNumber的通知的userInfo字典。 – jbat100

0

如果有些信息需要在整個應用程序是可見的,創建一個管理器類,它負責存儲信息。創建一個便捷的方法來訪問這個類的共享實例。發生事件意味着您必須更新信息時,請告訴共享實例有關該事件。對於需要顯示此信息的用戶界面的所有部分,對共享實例使用Key-Value Observing(KVO),以便在其任何屬性發生更改時通知它們。

+0

我已經把所有的代碼弄清楚了。我只需要在應用程序委託中運行此方法時,在另一個VC中的UIButton上更新徽章。 – Jon

相關問題