Мне нужно передать NSMutableDictionary
из одного класса (ViewControllerA
) в другой (ViewControllerB
) с помощью NSNotificationCenter
. Я пробовал следующий код, но он не работает. Я фактически перехожу к ViewControllerB
, но метод -receiveData
не вызывается. Любое предложение? Благодаря!Отправка данных между VC с использованием NSNotificationCenter
ViewControllerA.m
- (IBAction)nextView:(id)sender {
[[NSNotificationCenter defaultCenter]
postNotificationName:@"PassData"
object:nil
userInfo:myMutableDictionary];
UIViewController *viewController =
[[UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:NULL] instantiateViewControllerWithIdentifier:@"viewcontrollerb"];
[self presentViewController:viewController animated:YES completion:nil];
}
ViewControllerB.m
- (void)receiveData:(NSNotification *)notification {
NSLog(@"Data received: %@", [notification userInfo]);
}
- (void)viewWillAppear:(BOOL)animated {
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(receiveData:)
name:@"PassData"
object:nil];
}
Почему вы используете уведомления в этом случае? Обычно уведомления используются, когда вам нужно транслировать событие (возможно, с дополнительными данными), и вещателю не важно, кто или сколько других классов интересуется событием. В этом случае вам кажется, что вам нужно только убедиться, что ViewControllerA передает некоторые данные в ViewControllerB и только в то время, когда VCA создает и отображает VCB. Почему бы просто не установить VCA свойство на VCB вместо использования уведомления? – rmaddy