2011-10-25 12 views
0

私は、アプリケーションのアイコンのバッジカウントを更新するアプリケーションデリゲートのメソッドを持っています。私はこのメソッドも、私が持っている(通知センターのような)アプリケーション全体で見える別のVCの何かを更新したい。App Delegateと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

通知センターがあります。あなたはNSNotificationCenterを通じてNSNotificationsを使用して調べましたか?中央エンティティが聞く人を知らずに情報をブロードキャストするのが理想的です。これらの通知用のView Controllerは、同期的に呼び出されるコールバックで登録するだけです。

+0

これで、このメソッドが呼び出されたときに通知をセットアップし、interger 'messageTotal'を他のVCに渡すことができます。どのように私はコードでそれを正確に行うでしょうか?ありがとう – Jon

+1

NSNotificationプログラミングガイドを見れば、それはかなり徹底的で簡単です。通過したい整数のNSNumberを含む通知でuserInfo辞書を渡すことができます。 – jbat100

0

方法は次のようになります。このクラスの共有インスタンスにアクセスするための簡易メソッドを作成します。情報が更新されなければならないことを意味するイベントが発生した場合、そのイベントについて共有インスタンスに通知します。この情報を表示する必要があるユーザーインターフェイスのすべての部分について、共有インスタンスに対してKey-Value Observing(KVO)を使用して、プロパティのいずれかが変更されたときに通知を受け取ります。

+0

私はすでにすべてのコードを把握しています。このメソッドをアプリケーションデリゲートから実行すると、別のVCのUIButtonのバッジを更新するだけで済みます。 – Jon

関連する問題