如何将图像从uiimagepickercontroller传递到另一个场景的uiimageview中

如何保存UIImagePickerController摄像头图像,以便发送到CreateViewController场景的UIImageView

HomeViewController (场景1)有一个按钮,可以加载UIImagePickerController并返回来自摄像头的图像。 CreateViewController (场景2)有一个空的UIImageView

HomeViewController.h

 #import "CreateViewController.h" @interface HomeViewController : UIViewController  @property (strong, nonatomic) UIImagePickerController *imagePicker; @property(nonatomic, retain) UIImage *myImage; - (IBAction)cameraImage:(id)sender; 

HomeViewController.m

 @implementation HomeViewController @synthesize imagePicker, myImage; -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ( [segue.identifier isEqualToString:@"create"]) { CreateViewController *cvc = [segue destinationViewController]; UIImage *image = myImage; cvc.myImage = image; } } //Camera button action - (IBAction)cameraImage:(id)sender{ //UIImagePickerController space in memory imagePicker = [[UIImagePickerController alloc]init]; //Set the delegate imagePicker.delegate = self; //Set the sourceType imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; //Show Image Picker UI [self presentViewController:imagePicker animated:YES completion:^{}]; } -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info { self.myImage = [info objectForKey:UIImagePickerControllerOriginalImage]; [self dismissViewControllerAnimated:YES completion:^{}]; [self performSegueWithIdentifier:@"create" sender:self]; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [self dismissViewControllerAnimated:YES completion:^{}]; } 

CreateViewController.h

 @property (strong, nonatomic) IBOutlet UIImageView *bgImage; @property(nonatomic, retain) UIImage *myImage; 

CreateViewController.m

 @implementation CreateViewController @synthesize bgImage, myImage; - (void)viewDidLoad { [super viewDidLoad]; UIImage *image = myImage; [bgImage setImage:image]; } 

在此下载示例代码; http://code-blind.com/ios6-camera-picture-to-another-scenes-uiimageview/

如果以编程方式实例化控制器,则不必使用segue。

实现这一目标的最简单方法就是这样

 -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissViewControllerAnimated:YES completion:nil]; UIImage * pickedImage = [info objectForKey:UIImagePickerControllerOriginalImage]; DisplayViewController * controller = [DisplayViewController new]; controller.imageView.image = pickedImage; [self.navigationController pushViewController:controller animated:YES]; } 

如果你想使用segue,你需要手动调用它

 [self performSegueWithIdentifier:@"your-segue-name" sender:self]; 

然后你可以在HomeViewController中使用一个ivar来存储pickedImage并将它传递给你的destinationViewController

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { DisplayViewController * controller = (DisplayViewController *)segue.destinationViewController; controller.imageView.image = _pickedImage; } 

其中_pickedImage是您在拾取图像后存储图像的ivar。

在你的第一个视图

  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { CreateViewController* sI = [self.storyboard instantiateViewControllerWithIdentifier:@"XXXXX"]; sI.myImage = image; } 

XXXXX是视图的标识符。

首先,您必须确保调用了您的委托方法并且您拥有该图像。 接下来,将图像存储到属性:

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { self.takenImage = image; // assuming you have declared @property(nonatomic, strong) UIImage *takenImage; [picker dismissViewControllerAnimated:YES completion:^{ [self performSegueWithIdentifier:@"my-segue" sender:self]; }]; } 

在那之后,这个方法被称为:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // you need to set the picked image to the controller: DisplayViewController *controller; // get the controller controller.image = self.takenImage; } 

在这段代码中:

  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; if( i ==1) { [self dismissViewControllerAnimated:YES completion:^ { Second_ViewController*secondview=[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"Second_ViewController"]; secondview.bb_image=image; [[NSUserDefaults standardUserDefaults ]setInteger:0 forKey:@"123"]; [[self navigationController] pushViewController:secondview animated:YES]; }]; }