2016-04-10 10 views
-1

Ich habe zwei Bildansichten. Wenn ich unter der ersten Bildansicht auf eine Schaltfläche (z. B. takePhoto) klicke, wird das aufgenommene Foto in der ersten Bildansicht angezeigt. Wenn ich jedoch auf den zweiten "takephotoTwo" -Button tippe, möchte ich, dass das zweite Foto in der zweiten Bildansicht (imageTwo) erscheint. Wenn ich jetzt ein Foto mit dem zweiten "takephotoTwo" -Button mache, erscheint das letzte (gleiche) Bild in beiden Bildansichten. Siehe Code unten - weiß jemand, wie ich das beheben kann? Ich hoffe, ich habe das gut genug erklärt.Zeigen Sie Fotos in verschiedenen Bildansichten an

z.

Das Foto mit takePhoto (Knopf) genommen sollte in Imageview erscheinen, und das Foto mit takephotoTwo (Knopf) genommen in imageTwo erscheinen soll.

ViewController.m

- (IBAction)selectPhoto:(id)sender { 

     UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
     picker.delegate = self; 
     picker.allowsEditing = YES; 
     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

     [self presentViewController:picker animated:YES completion:NULL]; 
    } 

    - (IBAction)takePhoto:(id)sender { 

     UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
     picker.delegate = self; 
     picker.allowsEditing = YES; 
     picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

     [self presentViewController:picker animated:YES completion:NULL]; 

    } 


    - (IBAction)takePhotoTwo:(id)sender { 

     UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
     picker.delegate = self; 
     picker.allowsEditing = YES; 
     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

     [self presentViewController:picker animated:YES completion:NULL]; 
    } 

    - (IBAction)selectPhotoTwo:(id)sender { 

     UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
     picker.delegate = self; 
     picker.allowsEditing = YES; 
     picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

     [self presentViewController:picker animated:YES completion:NULL]; 

    } 


    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

     UIImage *secondImage = info[UIImagePickerControllerEditedImage]; 
     self.imageTwo.image = secondImage; 

     UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
     self.imageView.image = chosenImage; 

     [picker dismissViewControllerAnimated:YES completion:NULL]; 


    } 

Antwort

2

dies leicht durch die Verfolgung von dem Knopf angezapft wurde erreicht wird, oder eine Referenz auf die richtige Bildansicht zu speichern, basierend auf dem Knopf geklopft wurde. Dann legen Sie in der Bildauswahl-Delegiertenmethode die entsprechende Bildansicht fest.

Fügen Sie eine Instanzvariable vom Typ UIImageView * mit dem Namen selectedImageView hinzu.

dann den Rest des Codes wie folgt aktualisieren:

- (IBAction)selectPhoto:(id)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    selectedImageView = self.imageView; // Add this 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 

- (IBAction)takePhoto:(id)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    selectedImageView = self.imageView; // Add this 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 

- (IBAction)takePhotoTwo:(id)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    selectedImageView = self.imageTwo; // Add this 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 

- (IBAction)selectPhotoTwo:(id)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    selectedImageView = self.imageTwo; // Add this 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image = info[UIImagePickerControllerEditedImage]; 
    selectedImageView.image = image; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 
} 
+0

Danke !! :) Klappt wunderbar. – Brittany

+0

PS - keine Ahnung, warum diese Frage abgelehnt worden wäre ?! Es schien mir ein legitimes Q zu sein ... – Brittany

+0

Ich fragte mich das Gleiche. – rmaddy

2

Das Problem ist, dass unabhängig davon, welche Taste abgegriffen wird, können Sie Ihre UIImagePickerController geben die gleiche delegate. Daher wird das gleiche imagePickerController:didFinishPickingMediaWithInfo: aufgerufen. Aber zu diesem Zeitpunkt haben Sie keine Möglichkeit zu wissen, welcher Knopf angetippt wurde, so dass Sie nicht wissen, in welcher Bildansicht das Bild eingefügt werden soll.

Entweder geben Sie dem UIImagePickerController einen anderen delegate für jede andere Schaltfläche, oder speichern Sie in einer Instanzvariablen irgendwo Informationen darüber, welche Schaltfläche angetippt wurde, so dass imagePickerController:didFinishPickingMediaWithInfo: richtig entscheiden kann, was zu tun ist.

Verwandte Themen