Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 474
Jason Avatar asked Oct 24 '10 00:10

Jason


2 Answers

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)?

like image 151
Jay Peyer Avatar answered Nov 16 '22 15:11

Jay Peyer


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

like image 21
noRema Avatar answered Nov 16 '22 15:11

noRema