dismissModalViewControllerAnimated nonatomic?

Alf*_*sol 2 iphone model-view-controller uiviewcontroller

看来,我有一个奇怪的计时问题.我打开一个uiimagepicker作为模态视图.当用户选择图像或我想拍摄图像时,将其保存到变量,然后打开电子邮件界面作为模态视图.

我的问题是我在imagepicker上调用dismissModalViewController,然后为我的电子邮件界面调用presentmodalviewcontroller,但是imagepicker并没有及时显示电子邮件视图.有没有办法'等待'完成那行代码?

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
  if( [[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:@"public.image"] ){
    [self dismissModalViewControllerAnimated:YES];
    imageFromCamera = [[UIImageView alloc] initWithImage:[info objectForKey:UIImagePickerControllerOriginalImage]];

  MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init];
  mailView.mailComposeDelegate = self;
  [self presentModalViewController:mailView animated:YES];
  [mailView release];

}   
}
Run Code Online (Sandbox Code Playgroud)

我很确定我设计了一些错误的东西,但如果可以,请帮助我.

And*_*iot 6

您可以使用performSelector:withObject:withDelay:等待给定时间来传递(创建另一个具有稍后要执行的代码的方法.

然而,这可能会引入许多微妙的时间错误,因此我建议仅将其用于最极端的情况.

我想你可能会做一些事情,viewDidAppear:寻找你设置的标志,didFinishPicking…表明你正在等待imagePicker的动画结束.既然它已经完成了,那么动画应该在那时完成.