Связь между App Delegate и VC - PullRequest
       27

Связь между App Delegate и VC

0 голосов
/ 26 октября 2011

В моем приложении есть метод делегата, который обновляет количество значков для значка приложения.Я хочу, чтобы этот метод также обновлял что-то в другом 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 ]

2 голосов
/ 26 октября 2011

Вы упоминаете центр уведомлений. Вы смотрели на использование NSNotifications через NSNotificationCenter? Это идеально для центрального объекта, чтобы транслировать информацию, не зная, кто слушает. Вы можете просто зарегистрировать ваши контроллеры представления для этих уведомлений с помощью обратных вызовов, которые будут вызываться синхронно.

0 голосов
/ 26 октября 2011

Если некоторая информация должна быть видна во всем приложении, создайте класс менеджера, который отвечает за хранение информации. Создайте удобный метод для доступа к общему экземпляру этого класса. Когда происходит событие, означающее, что вы должны обновить информацию, сообщите об этом в общий экземпляр. Для всех частей вашего пользовательского интерфейса, которые должны отображать эту информацию, используйте Key-Value Observing (KVO) для общего экземпляра, чтобы получать уведомления при изменении любого из его свойств.

...