我的 unwind segue 代码运行良好。我使用 Storyboard来连接事情。当我运行该应用程序时,一切都很好。
但除了单击按钮之外,我还想从代码中展开。基本上我正在展示一个包含两个按钮的模式:相机 , 画廊 .用户单击其中一个按钮以从相机或图库中获取图像。所以一旦获得图像,我就不再需要模态视图了。因此,作为方法的最后一步(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
,我将我的放松转场称为
- (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>
我明白这个问题。但我不知道如何解决它。
基本上我不应该在“当”相机 View 仍在屏幕上时调用电话(即我的模态还没有在屏幕上)。但是我在哪里打电话呢?有没有
ImagePickerDidClose
这样的东西或类似的东西?我找不到一个。所以感谢您的帮助。
最佳答案
当imagePickerController:didFinishPicking...
方法触发,这是您关闭图像选择器 Controller 的机会:
[picker dismissViewControllerAnimated:YES completion:nil];
在大多数情况下,当我们调用这行代码时,我们会发送
nil
对于完成参数。但是,如果我们想在这种解除完成时做某事(就像我们在这里所做的那样),我们传递一个完成 block 参数:[picker dismissViewControllerAnimated:YES completion: ^{
[self performSegueWithIdentifier:@"myUnwindName" sender:self];
}];
关于ios - 从相机方法调用 unwind segue 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026381/