在uiimagePickerController:didFinishPickingMediaWithInfo之后关闭模态视图:

时间:2012-07-16 06:34:40

标签: iphone objective-c uiimagepickercontroller dismiss modal-view

我有一个ViewController(VC1),它以模态方式打开另一个嵌入在NavigationController(NavC1)中的ViewController(VC2)。 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];
    ...
}

到目前为止我尝试过:

  • 我试图使用父导航控制器
  • 解雇它
  • 我在VC1和prepareForSegue:中存储了对VC2的引用 当imagePicker执行时,将代理从VC2传递回VC1 完。在这种方法中,我试图简单地模仿模态视图 手动([self.myModalView dismissModalViewControllerAnimated:YES]

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

1 个答案:

答案 0 :(得分:0)

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

如果您要[self.navigationController presentedViewController];来VC2,那么您需要[self dismissModalViewControllerAnimated:YES];

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