【发布时间】:2014-09-02 05:08:30
【问题描述】:
在我的 iOS 应用中,用户可以从列表中选择一张图片,然后他们会看到一个包含图片和删除图片选项的模式。如果用户选择删除图像,她将返回到包含图像列表的原始 viewController。然后我需要刷新原始 ViewController 以考虑删除的图像。
当图像被删除到父视图控制器时,我尝试使用 NSNotificationCenter 进行广播。但是,似乎从未收到广播。
还有其他方法吗
- 在模式关闭后将数据发送回父 ViewController,并且
- 检测模式何时从父 ViewController 中消失?
(我尝试按照here 概述的示例进行操作,但似乎没有用)
下面是我的代码:
EditStepViewController(原视图控制器):
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MediaPreviewViewController *mediaPreviewVC = (MediaPreviewViewController *)[storyboard instantiateViewControllerWithIdentifier:@"MediaPreviewViewController"];
mediaPreviewVC.selectedImageURL = [NSString stringWithFormat:@"%@",gestureRecognizer.view.tag];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mediaPreviewVC];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didDismissMediaPreview)
name:@"MediaPreviewDismissed"
object:nil];
[self presentViewController:navigationController animated:YES completion:nil];
MediaPreviewViewController(第二个 ViewController):
...
[self deleteImage];
[[NSNotificationCenter defaultCenter] postNotificationName:@"MediaPreviewDismissed" object:nil userInfo:nil];
[self dismissViewControllerAnimated:YES completion:^(){
NSLog(@"dismissed controller");
}];
然后,回到 EditStepViewController:
-(void)didDismissMediaPreview{
NSLog(@"dismissed media preview"); // this is never logged!
[self.view setNeedsDisplay]; // refresh view to account for deleted image
}
提前感谢您的帮助!
【问题讨论】:
-
你能告诉我你在你的editStepViewController中添加观察者的地方吗
标签: ios objective-c uiviewcontroller nsnotificationcenter presentviewcontroller