popoverview内的UIImagePickerController导致错误

时间:2014-03-22 08:34:07

标签: ios objective-c uiimagepickercontroller uipopovercontroller

我正在尝试创建一个包含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.'

我不确定这意味着什么,所以希望我能就此事得到一些帮助。

3 个答案:

答案 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];