NSNotificationCenter在ViewDidLoad中调用了两次



我在应用程序中使用带有情节提要的JASidePanel,并且还使用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 次代码,当代码第一次执行时,我mustRunbool 变成NO(leftPanelMsg),但在下一次通知时再次调用leftPanelMsgmustRun将其值返回为 true,不知道为什么

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

#import "UIViewController+JASidePanel.h"
// ...
if (self.sidePanelController.centerPanel == self) {
// observe notification
}

或者你可以问:

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

最新更新