在App Delegate和VC之间进行通信

问题描述 投票:0回答:2

我的应用程序委托中有一个方法可以更新应用程序图标的徽章计数。 我希望这个方法也能更新另一个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;
}
iphone objective-c cocoa-touch delegates
2个回答
2
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.