NSNotificationCenter вызывается дважды в ViewDidLoad

Я использую JASidePanels с раскадровками в моем приложении, а также использую NSNotificationCenter

Проблема в том, что:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(msgResponder:) 
                                         name:@"leftPanelMsg" object:nil];

Он вызывается дважды внутри viewDidLoad один звонок, когда storyboard будет отображаться CenterViewController и второй, когда я раскрываю левую панель LeftViewControllerЯ использую один и тот же класс для обоих, есть ли способ остановить это?

Я попробовал приведенный ниже код, но не работает,

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:@"leftPanelMsg"
                                                      object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(msgResponder:) 
                                                        name:@"leftPanelMsg" 
                                                      object:nil];

Также я использовал bool чтобы выполнить код только 1 раз, я включаю mustRun хулиганить NO когда код был выполнен в первый раз (leftPanelMsg), но при следующем уведомлении, когда leftPanelMsg вызывается снова mustRun вернуть значение в true, не знаю почему

1 ответ

Решение

Похоже, что библиотека предоставляет расширение контроллера представления, которое отвечает sidePanelController, Так что ваш VC может спросить напрямую...

#import "UIViewController+JASidePanel.h"
// ...

if (self.sidePanelController.centerPanel == self) {
    // observe notification
}

или вы можете спросить:

if (self.sidePanelController.leftPanel == self) // ... and so on
Другие вопросы по тегам