postNotificationName не вызывает метод наблюдателя - PullRequest
9 голосов
/ 13 марта 2012

Я пытаюсь вызвать метод в uiview из AppDelegate, используя NSNotificationCenter, но безрезультатно.

AppDelegate.m

    [[NSNotificationCenter defaultCenter] postNotificationName:@"ProcessDidComplete" object:items];

Затем через MainStoryboard загружается основное представление, класс контроллера которого MainViewController

в MainViewController.h viewDidLoad у меня есть

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

, а затем метод

- (void) ProcessDidComplete:(NSNotification *)pNotification

но его никогда не вызывают.

Спасибо за любую помощь!

Ответы [ 3 ]

15 голосов
/ 13 марта 2012

просто поменяй путь ..

Первое добавление наблюдателя

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

Тогда отправьте уведомление

 [[NSNotificationCenter defaultCenter] postNotificationName:@"ProcessDidComplete" object:items];

Окончательно удалить в поле зрения исчезнет

 [[NSNotificationCenter defaultCenter] removeObserver:self name:@"ProcessDidComplete" object:nil];
5 голосов
/ 13 марта 2012

Ваш код выглядит нормально, что заставляет меня задуматься, где в вашем приложении делегат отправляет уведомление?

Если вы разместите уведомление до того, как добавите наблюдателя в контроллер представления, уведомление никогда не будет получено. Разве вы не можете отправлять сообщение контроллеру основного представления напрямую, т. Е. Как свойство, вместо использования уведомлений?

0 голосов
/ 24 февраля 2015

Просто хотел заметить, что имена уведомлений iOS чувствительны к регистру :

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

не ответит на:

[[NSNotificationCenter defaultCenter] postNotificationName:@"ScheduleUpdated" object:items];

(как я провел последние 20 минут, выясняя ...)

...