如何将图像从uiimagepickercontroller传递到另一个场景的uiimageview [英] How to pass image, from uiimagepickercontroller, into another scene's uiimageview

查看:43
本文介绍了如何将图像从uiimagepickercontroller传递到另一个场景的uiimageview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何保存 UIImagePickerController 摄像机图像,以便可以将场景的 UIImageView 发送到 CreateViewController ?

How do I save a UIImagePickerController camera image so I can send to CreateViewController scene's UIImageView?

HomeViewController (场景1)具有一个按钮,该按钮可加载 UIImagePickerController 并返回相机中的图像. CreateViewController (场景2)具有一个空的 UIImageView .

HomeViewController(scene 1) has a button that loads UIImagePickerController and returns with an image from the camera. CreateViewController(scene 2) has an empty UIImageView.

HomeViewController.h

#import "CreateViewController.h"

@interface HomeViewController : UIViewController
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>

@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-图片到另一个场景uiimageview/

Download sample code here; http://code-blind.com/ios6-camera-picture-to-another-scenes-uiimageview/

推荐答案

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

Using a segue is not mandatory if you are instanciating the controller programmatically.

最简单的方法是

-(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,则需要手动执行

If you want to use a segue you need to manually invoke it by doing

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

然后,您可以在HomeViewController中使用ivar存储 pickedImage ,并将其传递给 destinationViewController .

then you can use an ivar in your HomeViewController to store the pickedImage and pass it to your destinationViewController.

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

其中 _pickedImage 是在选择图像后将图像存储在其中的ivar.

where _pickedImage is the ivar where you stored the image after it has been picked.

这篇关于如何将图像从uiimagepickercontroller传递到另一个场景的uiimageview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆