我正在尝试创建一个包含UIImagePickerController的UIPopoverView,仅用于拍摄照片。当我按下工具栏上的按钮时,我试图创建这样的东西。方法看起来像这样。
- (void) cameraButtonSelected
{
// create picker
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
// create popover
UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:picker];
[popOver presentPopoverFromRect:CGRectMake(10, 30, 200, 350) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
问题是这会导致以下错误
Terminating app due to uncaught exception 'NSGenericException', reason: '-[UIPopoverController dealloc] reached while popover is still visible.'
我不确定这意味着什么,所以希望我能就此事得到一些帮助。
答案 0 :(得分:1)
UIPopoverController
应始终保存在实例变量中。
请参阅此UIPopovercontroller dealloc reached while popover is still visible
答案 1 :(得分:1)
尝试将UIPopoverController
设为公开,我的意思是在 .h 文件中声明,然后使用它。
如此
@property (nonatomic, strong) UIPopoverController * popOver;
然后在 .m 文件中使用它,例如....
.
.
.
.
self.popOver = [[UIPopoverController alloc] initWithContentViewController:picker];
[self.popOver presentPopoverFromRect:CGRectMake(10, 30, 200, 350) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
答案 2 :(得分:1)
将您的UIPopover
声明为属性。
像:
@property (nonatomic, strong) UIPopoverController *popOver;
使用它像:
self.popOver = [[UIPopoverController alloc] initWithContentViewController:picker];
[self.popOver presentPopoverFromRect:CGRectMake(10, 30, 200, 350) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];