UIPopoverController & UIImagePickerControl: “Popovers cannot be presented from a view which does not have a window”

StackOverflow https://stackoverflow.com/questions/4006724

Question

I am trying to display a UIImagePickerControl in my iPad app. At first, the debugger told me that I needed to put it in a popover when doing it on an iPad. So I wrote the following code:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
                         inView:self.view
       permittedArrowDirections:UIPopoverArrowDirectionAny 
                       animated:YES];

However, now I get the following error: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a view which does not have a window.'

Any suggestions on what I should do? I know that self.view should have a window, but apparently... it doesn't?

Was it helpful?

Solution

This can happen if that bit of code is getting executed before the view is loaded, as self.view is still nil and therefore so is self.view.window.

Is it possible that you're doing this in an init method or some other place before the view is loaded (before -viewDidLoad: is called)?

OTHER TIPS

This error had me baffled but it turned out that it was because the barButtonItem I was passing in to presentPopoverFromBarButtonItem was a UIBarButtonSystemItemFlexibleSpace item ant an actual button. My user error but just so people know this can als

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top