Objective c UIPopoverController和UIImagePickerController崩溃
以下是我的视图设置: 单击UIBarButtonim时,它应该会显示一个UIImagePickerController。我必须使用UIPopoverController来实现这一点,它可以通过点击重置按钮来调用,因为这在iPad上是必要的。这是我的密码:Objective c UIPopoverController和UIImagePickerController崩溃,objective-c,ios,cocoa-touch,ipad,uipopovercontroller,Objective C,Ios,Cocoa Touch,Ipad,Uipopovercontroller,以下是我的视图设置: 单击UIBarButtonim时,它应该会显示一个UIImagePickerController。我必须使用UIPopoverController来实现这一点,它可以通过点击重置按钮来调用,因为这在iPad上是必要的。这是我的密码: -(IBAction) btnReset:(id)sender { [self chooseImage]; } -(void) chooseImage { if ([UIImagePickerController isSour
-(IBAction) btnReset:(id)sender {
[self chooseImage];
}
-(void) chooseImage {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
imagepicker = [[UIImagePickerController alloc] init];
imagepicker.allowsEditing = NO;
imagepicker.delegate = self;
imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagepicker.navigationBar.opaque = true;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
popoverController = [[UIPopoverController alloc] initWithContentViewController:imagepicker];
[popoverController presentPopoverFromBarButtonItem:reset permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
} else {
[self presentModalViewController:imagepicker animated:YES];
}
}
}
但是,调用此函数时,视图会崩溃,并出现以下错误:
“NSInvalidArgumentException”,原因:“-[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated::无法从没有窗口的视图中显示PopOver。”
我做错了什么?提前感谢。看起来您正在尝试在不在视图层次结构上的项目上创建popover。如果您的按钮正在调用此方法,请将方法标题更改为-void chooseImage:idsender,然后尝试从工具栏上的UIBarButton显示popover
此外,如果您使用的是ARC,看起来您是,您必须保持您的UIPover,否则它将在仍然需要时释放,请参阅。您可能已经在这样做了,但我想我会把它作为一个例子来提出来,我不知道您是否/如何指定了popoverController。显示popover的重置变量是什么?重置是按钮的名称UIBarButtonim iAction只调用chooseImage方法,所以应该没问题。我不确定我在另一篇文章中应该有什么代码。我确实在头文件中创建了popOver并合成了它的属性。你看过这篇文章吗?下面的问题是你链接中的公认答案,效果最好。这并不完美,但我会让它工作的。