在App Delegate和VC之间进行通信

时间:2011-10-25 21:18:11

标签: iphone objective-c cocoa-touch delegates

我的app appate中有一个方法可以更新应用程序图标的徽章数。我希望这个方法也可以更新另一个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;
}

2 个答案:

答案 0 :(得分:2)

您提到了一个通知中心。您是否考虑过通过NSNotificationCenter使用NSNotifications?它是中央实体在不知道谁听的情况下广播信息的理想选择。您可以使用将同步调用的回调为这些通知注册视图控制器。

答案 1 :(得分:0)

如果需要在整个应用程序中显示某些信息,请创建一个负责存储信息的管理器类。创建一个方便的方法来访问此类的共享实例。当发生事件意味着您必须更新信息时,请告知共享实例有关该事件的信息。对于需要显示此信息的用户界面的所有部分,请对共享实例使用键值观察(KVO),以便在其任何属性发生更改时得到通知。