2010-04-17 11 views
0

Je suis en train d'invoquer UIImagePickerController pour sélectionner un film sur l'iPhone 3GS et lorsque le film est sélectionné, je rejette tout et présente MyViewController avec un retard modalement configuré de 1,0 secondes. Ce que je remarque est 10% du temps, presentModalViewController sur MyViewController ne fait rien alors que ça marche 90% des fois. Je veux comprendre pourquoi est ce comportement et quel est le remède. Voici l'exemple de code:UIImagePickerController dismissModalViewController

  • (void) imagePickerController: (UIImagePickerController *) Préparateur didFinishPickingMediaWithInfo: (NSDictionary *) Informations {

    NSURL * videoURL = nul;

    NSString * mediaType = [info objectForKey: UIImagePickerControllerMediaType];

    if ([mediaType isEqualToString:@"public.movie"]) 
    

    {

    videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 
    

    }

    picker.delegate = nul;

    [[sélecteur parentViewController] dismissModalViewControllerAnimated: YES]; [Self performSelector: @selector (launchMyViewController :) withObject: néant
    afterDelay: 1.0];

}

- (void) launchMyViewController: (id) obj {

MyViewController *myCtrl = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle] controller:self]; 

[self presentModalViewController:myCtrl animated:YES]; 
[myCtrl release]; 
NSLog(NSStringFromClass([self.modalViewController class])); 
[path release]; 

}

J'ai mis déclaration NSLog d'imprimer le nom de classe self.modalViewController et ce que je remarque c'est que 10% des fois où myCtrl n'est pas déclenché modalement, le self.modalViewController.class est UIImagePickerController. Sinon, la classe self.modalViewController.class est MyViewController. Je veux savoir pourquoi le comportement est si imprévisible et quelle est la solution de contournement ou d'une autre façon de réaliser la même chose que j'ai l'intention.

Répondre

0

Je vais deviner que l'utilisation de l'appel performSelector:afterDelay: est le problème. Essayez d'appeler votre méthode de lancement immédiatement, au lieu de passer par le délai.

Questions connexes