UIImagePickerController 在第二次取消时崩溃

Posted

技术标签:

【中文标题】UIImagePickerController 在第二次取消时崩溃【英文标题】:UIImagePickerController crashes on cancelling second time 【发布时间】:2015-07-09 07:21:40 【问题描述】:

我在我的应用程序中使用UIImagePickerController,每当我第二次单击取消时它就会崩溃并显示以下崩溃日志:

由于未捕获的异常而终止应用程序 'UIViewControllerHierarchyInconsistency',原因:'子视图 控制器:应该有父级 视图控制器:(null)但实际父级是:'

解雇代码:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

    [self dismissViewControllerAnimated:YES completion:nil];

相同的代码在其他应用程序中运行良好,但是当我将代码复制到新项目时,崩溃反复发生。 它发生在 ios 8.3 和 7.1 上,未在其他版本上测试。 任何帮助都会非常显着。

【问题讨论】:

如何在 ...didCancel 委托方法中隐藏 UIImagePickerController 发布隐藏选择器视图的代码。 我认为您正在尝试将 nil 对象添加到视图中 @BadalShah:您能详细说明您要解释的内容吗? 请签入imagePickerControllerDidCancel 选择器是否有parentViewController 并添加请显示选择器代码。 【参考方案1】:

.h中设置委托

@interface YourViewController : UIViewController < UIImagePickerControllerDelegate, UINavigationControllerDelegate>

当你想打开它时初始化图像选择器。

UIImagePickerController *imgPicker = [[UIImagePickerController alloc] init];
imgPicker.delegate = self;
imgPicker.allowsEditing = YES;
imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:imgPicker animated:YES completion:^ ];

委托方法

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

    [picker dismissViewControllerAnimated:YES completion:nil];

【讨论】:

非常感谢,您节省了我很多时间。但真正的问题是 imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen;在这里,我使用的是 UIModalPresentationCurrentContext,它导致我的新应用程序崩溃,但在以前的应用程序中没有。

以上是关于UIImagePickerController 在第二次取消时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中呈现 UIImagePickerController 的问题

如何在 iPad 上关闭 UIImagePickerController

仅在横向 UIImagePickerController 中显示CameraControls

UIImagePickerController 在 iOS 11 上泄漏

UIImagePickerController 呈现在视图中

在 iOS 7 上显示 UIImagePickerController 会导致崩溃