NSNotificationCenter 在 ViewDidLoad 中调用了两次
NSNotificationCenter called twice in ViewDidLoad
我在我的应用程序中将 JASidePanels 与故事板一起使用,并且还使用 NSNotificationCenter
问题在于:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(msgResponder:)
name:@"leftPanelMsg" object:nil];
它在 viewDidLoad
中被 调用两次 一次调用是当要显示 storyboard
时 CenterViewController
和第二次调用,当我显示左侧面板 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
) , 但在下一次通知再次调用 leftPanelMsg
时 mustRun
return 它的值为真,不知道为什么
看起来该库提供了一个视图控制器扩展来回答 sidePanelController
。所以你的vc可以直接问...
#import "UIViewController+JASidePanel.h"
// ...
if (self.sidePanelController.centerPanel == self) {
// observe notification
}
或者你可以问:
if (self.sidePanelController.leftPanel == self) // ... and so on
我在我的应用程序中将 JASidePanels 与故事板一起使用,并且还使用 NSNotificationCenter
问题在于:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(msgResponder:)
name:@"leftPanelMsg" object:nil];
它在 viewDidLoad
中被 调用两次 一次调用是当要显示 storyboard
时 CenterViewController
和第二次调用,当我显示左侧面板 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
) , 但在下一次通知再次调用 leftPanelMsg
时 mustRun
return 它的值为真,不知道为什么
看起来该库提供了一个视图控制器扩展来回答 sidePanelController
。所以你的vc可以直接问...
#import "UIViewController+JASidePanel.h"
// ...
if (self.sidePanelController.centerPanel == self) {
// observe notification
}
或者你可以问:
if (self.sidePanelController.leftPanel == self) // ... and so on