views:

39

answers:

1

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?

A: 

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

JP
Good call--I moved the function call to `-viewDidAppear:` and it works properly now!
Jason