Photo Vue bibliothèque reste à l'écran après avoir choisi une image avec UIImagePickerController

StackOverflow https://stackoverflow.com/questions/676039

Question

Après avoir choisi une image à travers l'interface UIImagePickerController de la bibliothèque de photos, la vue Photothèque reste affiché, même si je l'ai appelé dismissModelViewControllerAnimated imagePickerController: didFinishPickingImage: editingInfo .

Quelqu'un at-il vu? Ce sont les trois méthodes pertinentes que je utilise:

- (IBAction)choosePictureFromLibrary:(id)sender {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController* picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsImageEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
    else {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error accessing Photo Library" message:@"This device does not support a Photo Library." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}


- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingImage:(UIImage*)image editingInfo:(NSDictionary*)editingInfo {   
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Picture picked!" message:@"You picked a picture!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

    [picker dismissModalViewControllerAnimated:YES];
}


- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker {   
    [picker dismissModalViewControllerAnimated:YES];
}

J'aurais pensé que l'appel imagePickerController: didFinishPickingImage: editingInfo serait complètement rejeter la vue bibliothèque de photos, mais il ne semble pas. Y at-il autre chose que je dois faire pour faire disparaître?

Était-ce utile?

La solution

Vous devez accéder au viewController du sélecteur pas le sélecteur lui-même. Essayez cette ligne à la place.

[[picker parentViewController] dismissModalViewControllerAnimated:YES];

Autres conseils

Vous pouvez simplement appeler

[self dismissModalViewControllerAnimated:YES];

pour rejeter un contrôleur de vue modal au-dessus de la vue courante.

Cela est logique puisque vous présenter le contrôleur de vue en appelant:

[self presentModalViewController:picker animated:YES];

Juste une mise à jour des réponses à cette

 [self dismissModalViewControllerAnimated:YES];

a été dépréciée en sorte que vous devez iOS 6.0 maintenant utiliser.

 [self dismissViewControllerAnimated:YES completion:nil];

Pas un énorme changement, mais pour tous ceux qui se penche sur cette question et ils utilisent iOS 6.0, ils auront besoin d'une réponse mise à jour.

 [self presentModalViewController:filePicker animated:YES];

a également été dépréciée en faveur de

 [self presentViewController:filePicker animated:YES completion:nil];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top