HurkNburkS
HurkNburkS

Reputation: 5510

UIImagePickerController inside popoverview causing error

I am trying to create a UIPopoverView that contains a UIImagePickerController for taking photos only. I have attempted to create something like this when I press a button on my toolbar. The method looks like this.

- (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];
}

the issue being this procduces the following error

Terminating app due to uncaught exception 'NSGenericException', reason: '-[UIPopoverController dealloc] reached while popover is still visible.'

I am not sure exactly what this means so was hoping I could get some help on the matter.

Upvotes: 1

Views: 60

Answers (3)

Midhun MP
Midhun MP

Reputation: 107131

Declare your UIPopover as a property.

Like:

@property (nonatomic, strong) UIPopoverController *popOver;

Use it like:

self.popOver = [[UIPopoverController alloc] initWithContentViewController:picker];
[self.popOver presentPopoverFromRect:CGRectMake(10, 30, 200, 350) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

Upvotes: 1

Natarajan
Natarajan

Reputation: 3271

UIPopoverController should always be held in an instance variable.

Please refer this UIPopovercontroller dealloc reached while popover is still visible

Upvotes: 1

iPatel
iPatel

Reputation: 47069

Try to create UIPopoverController as public, I mean declare it in .h file and then use it.

Such like

@property (nonatomic, strong) UIPopoverController * popOver;

And then use it in .m file, such like....

.
.
.
.
self.popOver = [[UIPopoverController alloc] initWithContentViewController:picker];
[self.popOver presentPopoverFromRect:CGRectMake(10, 30, 200, 350) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

Upvotes: 1

Related Questions