2009-08-31 7 views
4

Je n'arrive pas à lancer la caméra lorsque je charge ma vue. Je finis par obliger l'utilisateur à trouver et appuyer sur un bouton sur l'écran juste pour charger l'appareil photo (redondant). Comment puis-je faire ceci? Code suit:Comment lancer l'appareil photo iPhone sur viewDidLoad?

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 

    self.imgPicker = [[UIImagePickerController alloc] init]; 
    self.imgPicker.allowsImageEditing = NO; 
    self.imgPicker.delegate = self; 
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    [super viewDidLoad]; 

    [self presentModalViewController:self.imgPicker animated:YES]; 

} 

MISE À JOUR:
plaçant le code ci-dessus dans -viewDidAppear: (BOOL) ANIME a permis à la caméra soit lancée, mais l'application est écrasé immédiatement après le dernier étant de routine [UIWindowController transitionViewDidComplete: deView: toView]; (comme cité par Débogueur)

Répondre

4

Vous devriez le faire dans viewWillAppear :, ou viewDidAppear: si le premier ne fonctionne pas. essayer de le faire dans viewDidLoad ne fonctionnera pas parce que cela est appelé après la création de la vue, et la vue n'est pas une sous-vue de quelque chose d'autre à ce moment-là. D'après ce que je comprends, pour appeler selfModalViewController, la vue doit à un certain niveau être affichée dans l'UIWindow.

Une autre chose que je viens de remarquer; votre code perd de la mémoire en fonction de la manière dont vous déclarez votre propriété imgPicker. si elle est déclarée avec retain au lieu d'assign, à moins que vous ne la libétiez explicitement deux fois quelque part, ce sélecteur existera toujours en mémoire. Vous devez libérer l'objet init'd lorsque vous l'affectez à la propriété dans ce cas.

+0

merci Kevlar! Vous m'avez sauvé d'un mal de tête potentiel de fuite. – RexOnRoids

+0

MISE À JOUR: - (void) viewDidAppear: (BOOL) animé travaillé dans ce cas. Merci! – RexOnRoids

+0

UPDATE-2: L'appareil photo s'affiche mais mon application se termine par: "Erreur EXC_BAD_ACCESS" – RexOnRoids

0

Semble qu'il ne le fait pas lorsque vous mettez l'appel à présenter la vue modale dans la vue a chargé. Vous pouvez essayer d'avoir une minuterie de 2 secondes après l'appel de [super viewDidload] qui pousse la vue sélecteur dans ou quelque chose comme ça.

+1

Une minuterie ne résoudra pas le problème; il peut s'écouler plus de deux secondes entre la création de la vue dans le contrôleur et sa prochaine apparition, auquel cas l'appel ne fonctionnera toujours pas. – Kevlar