NSNotificationCenter 在 ViewDidLoad 中调用了两次

NSNotificationCenter called twice in ViewDidLoad

我在我的应用程序中将 JASidePanels 与故事板一起使用,并且还使用 NSNotificationCenter

问题在于:

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

它在 viewDidLoad 中被 调用两次 一次调用是当要显示 storyboardCenterViewController 和第二次调用,当我显示左侧面板 LeftViewController,我对两者使用相同的 class,有没有办法阻止它?

我已经尝试了下面的代码但是没有用,

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

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

我还使用 bool 仅执行代码 1 次,我在第一次执行代码时将 mustRun 布尔值变为 NO (leftPanelMsg) , 但在下一次通知再次调用 leftPanelMsgmustRun return 它的值为真,不知道为什么

看起来该库提供了一个视图控制器扩展来回答 sidePanelController。所以你的vc可以直接问...

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

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

或者你可以问:

if (self.sidePanelController.leftPanel == self) // ... and so on