2017-08-22 1 views
-2

Ich möchte aufgenommenes Bild (VC "First") in einem anderen View-Controller ("Second") anzeigen. Wenn ich auf einen Button in "First" klicke, kann ich ein Foto machen. Dann sehe ich zwei Optionen: Wiederholen und Foto verwenden. Nachdem ich geklickt habe: Benutze Photo Ich bin wieder in vc "First", aber ich würde gerne neue vc "Second" öffnen und das Bild in UIImageView sehen.Swift-Anzeige Bild in einer anderen Ansicht Controller (Bildansicht)

Ich habe einen solchen Code in "First":

var imagePicker: UIImagePickerController! 

@IBAction func takePhoto(_ sender: Any) { 
    let imagePicker = UIImagePickerController() 
    imagePicker.delegate = self 
    imagePicker.sourceType = UIImagePickerControllerSourceType.camera 
    imagePicker.allowsEditing = false 
    self.present(imagePicker, animated: true, completion: nil) 

    //self.performSegue(withIdentifier: "Second", sender: self) 
} 

Könnten Sie mir bitte mit diesem Problem helfen?

Antwort

-1

Schnellster Weg, initialisieren Sie ein globales Image und übergeben Sie das Image an dieses Image.

schreiben Sie diesen Code in einer beliebigen Datei (im Idealfall es angemessen nennen), außerhalb jeder Klasse oder Struktur:

var globalImage: UIImage? 

Dann Bild von der Kamera speichern, zeigen Sie es in jedem VC und wenn der Benutzer drückt speichern, hinzufügen es wo immer du willst. Stellen Sie sicher, dass Sie das Bild sicher auspacken, um Abstürze zu vermeiden.

+0

Warum wurde meine Antwort abgelehnt? Es löst die Anforderung –

1

im ersten View-Controller können Sie die Klassenvariable hinzu:

var selectedImage: UIImage? 

dann wechseln Sie in die Main.storyboard.

Klicken Sie auf den ersten View Controller und ziehen Sie ihn dann vom ersten View Controller zum Second View Controller. Wählen Sie "show" im Popup, um einen Übergang zu erstellen.

Wählen Sie nun das Segment im Interface Builder aus und geben Sie ihm in den Attributen den Bezeichner "Second". (Sie haben wahrscheinlich schon, dass, wenn Sie die Segue hatte bereits Setup)

dann Sie Ihre aktuelle Methode das ändern könnte:

self.present(imagePicker, animated: true, completion: nil) 

dazu:

self.present(self, animated: true) { 
      self.performSegue(withIdentifier: "Second", sender: self) 
     } 

und fügen Sie die Vorbereitung für segue-Methode zuerst:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "Second" { 
      let destinationVC = segue.destination as! Second 
      if let image = selectedImage { 
       destinationVC.selectedImage = image 
      } 
     } 
    } 

und in Second könnten Sie die Klassenvariable hinzufügen:

var selectedImage: UIImage! 

und Ihre Bildansicht Bild nach Ansicht der zweiten View Controller eingestellt haben Last-Methode

Ich bin sicher, dass es andere Möglichkeiten gibt, es zu tun.

Verwandte Themen