私の iOS アプリでは、ユーザーはリストから画像を選択できます。そのリストには、画像と画像を削除するオプションを含むモーダルが表示されます。ユーザーが画像の削除を選択すると、画像のリストを含む元の viewController に戻ります。次に、削除されたイメージを考慮して、元の ViewController を更新する必要があります。
NSNotificationCenter を使用して、画像が削除されたときに親 View Controller にブロードキャストしようとしました。ただし、ブロードキャストは受信されないようです。
他の方法はありますか
- モーダルが閉じられた後、データを親 ViewController に送り返します。
- モーダルが親 ViewController から閉じられたことを検出しますか?
(ここで概説されている例に従ってみましたが、うまくいかなかったようです)
以下は私のコードです:
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 (2 番目の 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
}
よろしくお願いします。