user1858163
user1858163

Reputation: 49

Image Picker on ipad

I know image picker on the iPad needs to be a popover, and I keep trying but it won't work and crashes when I tap the button that calls the popover.

   -(IBAction)addPhoto:(id)sender{
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    popover=[[UIPopoverController alloc]
             initWithContentViewController:imagePicker];
    [popover presentPopoverFromRect:((UIButton *)sender).frame
                             inView:self.view
           permittedArrowDirections:UIPopoverArrowDirectionAny
                           animated:YES];
}


    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo {

    // Delete any existing image.
    NSManagedObject *oldImage = imageClass.image;
    if (oldImage != nil) {
        [imageClass.managedObjectContext deleteObject:oldImage];
    }

    // Create an image object for the new image.
    NSManagedObject *myImage = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:imageClass.managedObjectContext];
    imageClass.image = myImage;

    // Set the image for the image managed object.
    [image setValue:selectedImage forKey:@"image"]; 
    [self dismissViewControllerAnimated:YES completion:nil];
}

Upvotes: 0

Views: 1251

Answers (2)

HereTrix
HereTrix

Reputation: 1417

Try to create property to store Your popover controller or store content controller. Seems that one of view controllers releases right after end of method. Also, iOS 7 have awful behavior of UIImagePickerController in popover. This is related question.

Upvotes: 0

rmaddy
rmaddy

Reputation: 318774

Based on the exception you are getting, the problem is that the sender for the addPhoto method is actually a UIBarButtonItem, not a UIButton. You need to change how the popover is displayed from using the button's frame to being displayed from the bar button.

-(IBAction)addPhoto:(UIBarButtonItem *)sender {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    popover = [[UIPopoverController alloc]
         initWithContentViewController:imagePicker];

    [popover presentPopoverFromBarButtonItem:sender
        permittedArrowDirections:UIPopoverArrowDirectionAny
        animated:YES];
}

Upvotes: 1

Related Questions