UIImagePickerController dismissModalViewController - PullRequest
0 голосов
/ 17 апреля 2010

Я пытаюсь вызвать UIImagePickerController, чтобы выбрать фильм на iPhone 3GS, и когда фильм выбран, я просто отклоняю его и представляю MyViewController модально с настроенной задержкой 1,0 секунды. То, что я замечаю в 10% случаев, presentModalViewController на MyViewController ничего не делает, тогда как он работает в 90% случаев. Я хочу понять, почему это поведение и каково средство. Вот пример кода:

  • (void) imagePickerController: (UIImagePickerController *) средство выбора didFinishPickingMediaWithInfo: (NSDictionary *) информация {

    NSURL * videoURL = ноль;

    NSString * mediaType = [info objectForKey: UIImagePickerControllerMediaType];

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

    {

      videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    

    }

    picker.delegate = nil;

    [[picker parentViewController] dismissModalViewControllerAnimated: YES];

    [self executeSelector: @selector (launchMyViewController :) withObject: nil
    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];

}

Я поместил оператор NSLog для печати имени класса self.modalViewController, и я замечаю, что в 10% случаев, когда myCtrl не запускается модально, self.modalViewController.class является UIImagePickerController. В противном случае self.modalViewController.class является MyViewController. Я хочу знать, почему поведение настолько непредсказуемо, и какой обходной путь или другой способ достичь того же, что я намереваюсь.

1 Ответ

0 голосов
/ 17 апреля 2010

Я собираюсь догадаться, что проблема с вызовом performSelector:afterDelay:. Попробуйте вызвать метод запуска немедленно, а не через задержку.

...