4 Stimmen

Wie man ein Bild vom UIImagePickerController in die UIImageView einer anderen Szene überträgt

Wie speichern Sie ein UIImagePickerController-Kamerabild, damit ich es an die CreateViewController-Szene UIImageView senden kann?

HomeViewController (Szene 1) hat einen Button, der UIImagePickerController lädt und mit einem Bild aus der Kamera zurückkehrt. CreateViewController (Szene 2) hat eine leere 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;

}
}

//Kamera-Button-Aktion
- (IBAction)cameraImage:(id)sender{
//UIImagePickerController Speicherplatz
imagePicker = [[UIImagePickerController alloc]init];
//Den Delegaten setzen
imagePicker.delegate = self;
//Der sourceType setzen
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
//Image Picker UI anzeigen
[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];
}

Sample-Code hier herunterladen; http://code-blind.com/ios6-camera-picture-to-another-scenes-uiimageview/

5voto

Gabriele Petronella Punkte 104760

Die Verwendung eines Segues ist nicht zwingend erforderlich, wenn Sie den Controller programmatisch instanziieren.

Der einfachste Weg, dies zu erreichen, sieht so aus:

-(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];
}

Wenn Sie einen Segue verwenden möchten, müssen Sie ihn manuell aufrufen, indem Sie Folgendes tun:

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

dann können Sie ein ivar in Ihrem HomeViewController verwenden, um das pickedImage zu speichern und es an Ihren destinationViewController weiterzugeben.

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

wo _pickedImage das ivar ist, in dem Sie das Bild gespeichert haben, nachdem es ausgewählt wurde.

1voto

Amitabha Punkte 1644

Bei Ihrem ersten Blick

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

XXXXX ist der Bezeichner der Ansicht.

0voto

supermarin Punkte 638

Zuerst müssen Sie sicherstellen, dass Ihre Delegiertenmethode aufgerufen wird und dass Sie das Bild haben. Speichern Sie dann das Bild in einer Eigenschaft:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {

    self.takenImage = image; // angenommen, Sie haben @property(nonatomic, strong) UIImage *takenImage deklariert;
    [picker dismissViewControllerAnimated:YES completion:^{

        [self performSegueWithIdentifier:@"my-segue" sender:self];   
    }];

}

Danach wird diese Methode aufgerufen:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Sie müssen das ausgewählte Bild dem Controller zuweisen:

    DisplayViewController *controller; // Controller abrufen
    controller.image = self.takenImage;
}

0voto

Ramani Hitesh Punkte 204

In diesem Code:

    - (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];

      }];
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X