Ниже то, что у меня есть.
MainViewController.m
- (IBAction)sideMenuAction:(id)sender {
NSLog(@"login==sideMenuAction");
[[NSNotificationCenter defaultCenter] postNotificationName:@"ShowMySideMenuNotification" object:self];
}
NotificationListener.m
-(void)viewDidLoad {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ShowMySideMenuNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(adjustShowMenu) name:@"ShowMySideMenuNotification" object:nil];
}
-(void) adjustShowMenu {
NSLog(@"notification adjustShowMenu=");
}
Теперь, когда я нажимаю кнопку бокового меню в MainViewController, я ожидал один раз вызвать AdjustShowMenu из NotificationListener, однако он вызывается дважды.
Ниже приведен NSLog для того же.
2015-01-20 12:27:30.798 abc[699:169314] login==sideMenuAction
2015-01-20 12:27:30.798 abc[699:169314] notification adjustShowMenu=
2015-01-20 12:27:30.799 abc[699:169314] notification adjustShowMenu=
То, что я ожидал, это
2015-01-20 12:27:30.798 abc[699:169314] login==sideMenuAction
2015-01-20 12:27:30.798 abc[699:169314] notification adjustShowMenu=
Любая идея, что происходит не так?
Примечание. Я также пробовал использовать viewDidAppear вместо viewDidLoad, но результат тот же.
Когда я искал в Интернете, многие ответы просили удалить Observer. Я сделал то же самое, но все равно дважды вызывается уведомление.
viewWillAppear
и удалить вviewWillDisappear
илиviewDidLoad
/dealloc
. - person Simon McLoughlin   schedule 20.01.2015