UIPickerView UIImage和Segue

在我的应用程序中,我在我的UserView中使用UIImagePickerCollection相机。 但一旦用户select“使用照片”,我想在另一个视图“cameraView”,因为我有一些待遇做我的照片。 这是我的代码:

-(void)takeAPicture{ NSLog(@"CHEESE"); UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.mediaTypes = @[(NSString *) kUTTypeImage]; imagePicker.allowsEditing = NO; [self presentViewController:imagePicker animated:YES completion:nil]; } -(void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [self dismissViewControllerAnimated:YES completion:^{ _img = [info objectForKey:UIImagePickerControllerOriginalImage]; if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera) { UIImageWriteToSavedPhotosAlbum(_img, nil, nil, nil); }}]; [self performSegueWithIdentifier:@"toCameraView" sender:self]; } -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([[segue identifier] isEqualToString:@"toCameraView"]) { CameraViewController *transferViewController = segue.destinationViewController; transferViewController.img = _img; } } 

当我运行我的应用程序时,我收到一条警告消息:

 Warning: Attempt to present <CameraViewController: 0x17e20eb0> on <EIUserViewController: 0x189b1000> while a presentation is in progress! 

我不明白它是什么,如何处理它,在select“使用图片”之后,我无法设法在另一个视图中接收我的图像并直接显示我的视图。 如果有人有解释或解决scheme? 感谢你们 !

在UIImagePickerController解散期间,你正在尝试[self performSegueWithIdentifier:@“toCameraView”sender:self],也就是说:不能animation第一个VC消失期间出现的第二个VC。 尝试移动[self performSegueWithIdentifier:@“toCameraView”sender:self]; 里面完成BlockBlock:

 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [self dismissViewControllerAnimated:YES completion:^{ _img = [info objectForKey:UIImagePickerControllerOriginalImage]; if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera) { UIImageWriteToSavedPhotosAlbum(_img, nil, nil, nil); [self performSegueWithIdentifier:@"toCameraView" sender:self]; }}]; } 

所以,当imagePicker调用委托方法imagePickerController: didFinishPickingMediaWithInfo: imagePicker仍然由您的viewController呈现。

解决这个问题的一个办法是在你回到你的viewController的时候显示cameraView,像这样:

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [self dismissViewControllerAnimated:YES completion:^{ _img = [info objectForKey:UIImagePickerControllerOriginalImage]; if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera) { UIImageWriteToSavedPhotosAlbum(_img, nil, nil, nil); }}]; self.newPicture = YES; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if (self.newPicture) { [self performSegueWithIdentifier:@"toCameraView" sender:self]; self.newPicture = NO; } } 

希望能帮助到你