1
votes

I am trying access the Photo Library from an iPad application. It is said that "On iPad, UIImagePickerController must be presented via UIPopoverController". That's exactly the log message that I get too.

Here is a snapshot of my app:

https://www.evernote.com/shard/s241/sh/b0283978-b50b-425f-8e8f-b9a5a171c463/de48b8b2dfe7716fe304e85a18ecacfc

Since I am already listing the options via a popover, it doesn't make sense to go another popover from within. The accessPhotoLibrary method gets called when the user taps on the "Photo Library" cell.

-(void)accessPhotoLibrary{
    NSLog(@"Photo library access requested!");
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){
        NSLog(@"Photo Library");
        [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
        [imagePickerController setDelegate:self];
        [imagePickerController setModalPresentationStyle:UIModalPresentationFullScreen];
        [self presentViewController:imagePickerController animated:YES completion:nil];
    }
    else{
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle: @"Photo Library"
                              message: @"Sorry, couldn't open your photos library"
                              delegate: nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
    }
}

But how do I get around this problem of having to access the photo library using a popover when I am using one already??

Any help is much appreciated.

1
What's wrong with your current code? Looks like it would work.Undo♦
You need to use another UIPopoverController for the image picker (if it's for the photo library - the camera should be in a full screen modal view controller). Do not reuse the little popover used for the options. BTW - why not use a UIActionSheet for the options?rmaddy
@ErwaySoftware UIImagePickerController must be in a UIPopoverController on the iPad if the image picker is not for the camera.rmaddy
@rmaddy Must? Really? You can't push it to a nav con like a print controller?Undo♦
@user1646683 - One thing to try first is to change the modal presentation style from UIModalPresentationFullScreen to UIModalPresentationCurrentContext since you are already in a popover.rmaddy

1 Answers

0
votes

You can present the image picker within the same popover. Hold a reference to the popover (the parent view controller presenting the popover can pass a reference) and then you can do the following:

[_parentPopover setContentViewController:imagePickerController animated:YES];

If needed, you can change the size of the content presented in the popover using the property "contentSizeForViewInPopover" in the image picker view controller.