从相机方法调用unwind segue失败

我的unwind segue代码工作正常。 我用故事板来连线。 当我运行应用程序,一切都很好。

但除了点击一个button之外,我还想从代码中解开。 基本上我提出了一个模式,其中包含两个button: 相机画廊 。 用户单击其中一个button即可从相机或图库中获取图像。 所以一旦获得图像,我不再需要模态视图。 因此,作为方法的最后一步(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ,我把我的unwind segue称为

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { //... do work here and then [self performSegueWithIdentifier:@"myUnwindName" sender:self]; } 

但是当我做我得到以下错误

 attempt to dismiss modal view controller whose view does not currently appear. self = <UITabBarController: 0x127d09b80> modalViewController = <UIImagePickerController: 0x127e2fd80> 

我明白这个问题。 但是我不知道如何解决这个问题。

基本上我不应该打电话“而”相机视图仍然在屏幕上(即我的模式不在屏幕上)。 但是,我在哪里打电话? 有像ImagePickerDidClose或类似的东西吗? 我找不到一个。 所以谢谢你的帮助。

imagePickerController:didFinishPicking...方法触发时,这是您解除图像选取器控制器的机会:

 [picker dismissViewControllerAnimated:YES completion:nil]; 

在大多数情况下,当我们调用这行代码时,我们发送完成参数nil 。 然而,如果我们想在这个解雇完成的时候做一些事情(就像我们在这里所做的那样),我们通过一个完成块的论点:

 [picker dismissViewControllerAnimated:YES completion: ^{ [self performSegueWithIdentifier:@"myUnwindName" sender:self]; }];