0

我有一个 ViewController (VC1),它以模态方式打开另一个 ViewController (VC2),该 ViewController (VC2) 嵌入在 NavigationController (NavC1) 中。VC2 用作源选择视图,供用户选择不同的源,例如内置的照片库。当用户在 VC2 中选择照片库时,我正在打开 Apple 的 imagePicker。

VC1 --(modal)--> NavC1 ----> VC2

在 imagePickerdidFinish 中,我想关闭之前模态显示的 VC2。实际上这个方法看起来如下。

-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];

    ...

    NSError* error;
    if([UIImageJPEGRepresentation(image, 0.5) writeToFile:path options:NSDataWritingFileProtectionComplete error:&error] == NO)
    {
        NSLog(@"Saving image to file failed with error %@",[error localizedDescription]);
    }

    picker.delegate = nil;
    [self dismissModalViewControllerAnimated:YES];
    ...
}

到目前为止我已经尝试过:

  • 我试图使用父导航控制器将其关闭
  • 我已经在prepareForSegue:VC1 中存储了对 VC2 的引用,并在 imagePicker 完成后将委托从 VC2 传递回 VC1。在这种方法中,我试图简单地手动关闭模态视图([self.myModalView dismissModalViewControllerAnimated:YES]

有人对我有什么建议吗?提前致谢!

4

1 回答 1

0

如果你要来VC2[self.navigationController PushViewController:VC2Object animated:YES];那么你需要弹出它,即[self.navigationController popViewController];

如果您届时将来到 VC2,[self.navigationController presentedViewController];则需要[self dismissModalViewControllerAnimated:YES];

因此,请检查您如何在内存中加载 VC2 viewController。

于 2012-07-16T06:47:01.310 回答