ios - 从相机方法调用 unwind segue 失败

标签 ios objective-c modal-dialog uiimagepickercontroller segue

我的 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/

相关文章:

ios - Swift Play 视频无法显示

ios - 如何将项目导入 Xcode

ios - 应用进入后台时暂停和恢复 Google Admob 横幅广告 objective-c

javascript - 如何加载 leanmodal div 内容 onclick

jquery - 设置对话框显示的值

ios - 从 Xcode 11.1 升级到 Xcode 11.2 后,应用程序因 _UITextLayoutView 崩溃

ios - 如何使用userDefaults在Swift3中保存UISegmentedControl的状态

objective-c - 将标签绑定(bind)到类的属性

ios - 我可以使用一本关于 Objective-C 的旧书,它在今天仍然适用于构建 ios 7 应用程序吗?

twitter-bootstrap - Jasny Bootstrap rowlink 关闭模式未关闭?