Я пытаюсь передать NSString из одного класса в другой. Скажем, я ViewController А и ViewController B. Я хочу передать NSString от А до В.NSNotification не вызывает метод @selector
В ViewController А я следующий код:
[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationMessageEvent" object:userType];
// Здесь тип пользователя является строкой, я получаю используя делегата, и мне нужно, чтобы передать эту UserType в ViewController в
в ViewController B, я следующий код: в viewDidLoad, я следующий код:
[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(notificationAction:) name:@"NotificationMessageEvent" object:nil];
// Этот метод NSNotificationCenter называется
Я зарегистрировал следующий метод выбора.
-(void) notificationAction:(NSNotification *) notification
{
if ([notification.object isKindOfClass:[NSString class]])
{
NSString *message = [notification object];
// do stuff here with your message data
NSLog(@"%@ is message",message);
}
else
{
NSLog(@"Error, object not recognised.");
}
}
// Вышеуказанный метод выбора никогда не вызывается.
Я прочитал другие аналогичные ответы stackoverflow, но я не смог найти решения по этому вопросу.
Для того, чтобы выше селектора уведомлений на самом деле быть добавлены, ViewController Б viewDidLoad должен был назван (AKA представление должно быть) –
Спасибо за разъяснение, что @ Хайден Холлиган. Я фактически загружал A до B. – Rosh
Хотя ваш код работает, пожалуйста, не используйте объект уведомления таким образом. Объект в этом случае является отправителем экземпляра уведомления. Используйте userInfo для передачи некоторой информации между объектами. –