2010-02-17 5 views
0

Ceci est mon code à ce jour:iPhone SDK - Comment afficher une photo prise avec l'appareil photo dans un UINavigationController?

/* class: myViewController 
@interface myViewController: UIViewController 
     <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 
*/ 
- (IBAction) getPicture { 
    UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
     picker.delegate = self; 
     picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
     [self presentModalViewController:picker animated:YES]; 
} 

- (void) imagePickerController:(UIImagePickerController *)thePicker 
        didFinishPickingMediaWithInfo:(NSDictionary *)imageInfo 
{ 
    [[thePicker parentViewController] dismissModalViewControllerAnimated:YES]; 
     UIImage *img = [imageInfo 
          objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    self.myImageView.image = img; 
} 

Donc, fondamentalement, je suis en train de prendre une photo de la caméra de l'iPhone et l'afficher dans un UIImageView. Cela fonctionne parfaitement bien tant que la classe myViewController est affichée en mode autonome. Si je place la vue dans un UINavigationController, l'UIImageView n'affichera pas l'image après en avoir pris une avec la caméra. Mais si je choisis une photo de la bibliothèque, tout va bien. Alors, pourquoi UIImageView n'affichera-t-il pas une image prise avec l'appareil photo dans un UINavigationController?

Répondre

0

Essayez de changer les lignes suivantes:

[thePicker dismissModalViewControllerAnimated:YES]; 
UIImage *img = [imageInfo objectForKey:@"UIImagePickerControllerOriginalImage"]; 
self.myImageView.image = img; 

à ce qui suit:

UIImage *img = [imageInfo objectForKey:@"UIImagePickerControllerOriginalImage"]; 
self.myImageView.image = img; 
[thePicker dismissModalViewControllerAnimated:YES]; 

Peut-être que l'image est libéré à cause de la destituant de la vue avant de vous conserviez avec

self.myImageView.image = img; 
+0

J'ai essayé sans succès. – dan

+0

Avez-vous essayé ce qui suit après le réglage de l'image? [self setNeedsDisplay]; – Shingoo

+0

Malheureusement, cela ne change rien. – dan

0

Il me semble que vous rejetez le mauvais viewcontroller. Ne devrait pas:

[thePicker dismissModalViewControllerAnimated:YES]; 

lecture:

[self dismissModalViewControllerAnimated:YES]; 
+0

Je viens d'essayer ça mais ça ne fait aucune différence. Pourriez-vous m'expliquer un peu plus? thePicker devrait être l'ImagePicker actuel. – dan

+0

thePicker est l'ImagePicker actuel, mais je pense que vous êtes censé envoyer l'appel dismissModalViewControllerAnimated au contrôleur de vue qui a créé le contrôleur de vue modale plutôt que le contrôleur de vue modale lui-même – pheelicks

+0

L'un ou l'autre fonctionnera. –

Questions connexes