【问题标题】:Warning: Attempt to present <UIImagePickerController: 0x7ca5dc00> on <UIViewController: 0x7b9cac00> which is already presenting (null)警告:尝试在已呈现的 <UIViewController: 0x7b9cac00> 上呈现 <UIImagePickerController: 0x7ca5dc00> (null)
【发布时间】:2015-05-29 11:56:19
【问题描述】:
我在使用 iPad 时遇到此错误。但是 iPhone 可以工作。请分享解决方案。我的代码如下。
-(void)pickImageFromLibrary
{
UIImagePickerController *picker10 = [[UIImagePickerController alloc] init];
picker10.delegate = self;
picker10.allowsEditing = YES;
picker10.view.tag=100;
picker10.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker10 animated:YES completion:NULL];
}
【问题讨论】:
标签:
ios
objective-c
iphone
uiimagepickercontroller
【解决方案1】:
你应该试试这个代码!
[self.presentedViewController dismissViewControllerAnimated:NO completion:nil];
【讨论】:
-
请edit 提供更多信息。纯代码和“试试这个”的答案是discouraged,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。我们在这里努力成为知识的资源。
【解决方案2】:
UIImagePickerCopntroller 必须在 iPad 的弹出窗口中呈现。看看下面的 iPad 代码:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
[popover presentPopoverFromRect:self.selectedImageView.bounds inView:self.selectedImageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popOver = popover;
} else {
[self presentModalViewController:picker animated:YES];
}
不要忘记为弹出框添加一个强属性:
@property (nonatomic, strong) UIPopoverController *popOver;
这里是解除它的委托方法:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
这里是指向类参考的链接以获取更多信息:Class Refference