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