4

我需要使用. NSMutableDictionary_ 我已经尝试了以下代码,但它不起作用。我实际上传递给但没有调用该方法。有什么建议吗?谢谢!ViewControllerAViewControllerBNSNotificationCenterViewControllerB-receiveData

视图控制器A.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];
}

视图控制器B.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];
}
4

1 回答 1

2

您对NSNotificationCenter方法的调用很好。有几点需要考虑:

  1. ViewControllerB实例在被调用之前不会注册通知-viewWillAppear:,所以如果你还没有显示你的实例ViewControllerB(通常,如果它在 VC 层次结构中比 A 更远),你就不能得到通知调用。注册通知-initWithNibName:bundle:更有可能是您想要的。

  2. 一个推论是:ViewControllerB当您发送通知时,您的实例必须存在才能被接收。如果您ViewControllerBMainStoryboardin加载-nextView:,则它尚未注册通知。

于 2013-03-24T15:25:37.593 回答