2016-04-02 5 views
0

Ich bin ziemlich neu zu programmieren und ich habe zwei Tasten, eine Kamera ist die andere ist ChooseExistingPhoto. Ich kann mit der Kamerataste auf die Kamerafunktionen zugreifen und versuche, das Bild, das ich auf ein UII-Bild nehme, in einem anderen View-Controller anzuzeigen. Mein Code gibt mir eine Fehlermeldung, dass Snapshot nicht gerendert werden kann, bevor es erstellt wird. Ich nehme an, dass dies daran liegt, dass ich auch versuche, die Schaltfläche als Überleitung zu verwenden, um den neuen Ansichtscontroller anzuzeigen. Gibt es eine Möglichkeit, die Aktion zu verzögern, bis der Benutzer ein Bild in seiner Fotobibliothek ausgewählt oder ein Foto gemacht hat?Gibt es eine Möglichkeit, die Aktion zu verzögern, bis der Benutzer ein Bild durch seine Fotobibliothek aufgenommen oder ein Foto aufgenommen hat? SWIFT

@IBAction func Kamera (Sender: ANYOBJECT) {

let picker = UIImagePickerController() 

    picker.delegate = self 
    picker.sourceType = .Camera 

    presentViewController(picker, animated: true, completion: nil) 

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
     self.performSegueWithIdentifier("Show", sender: self) 


     func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
     { 
      if segue.identifier == "Show" { 
       imageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
       dismissViewControllerAnimated(true, completion: nil) 
      } 
     } 
    } 

dies ist der Code, den ich für meine Taste haben. imageDisplay ist ein Bild-Outlet, das ich für das ImageView erstellt habe und um diesen Code zu erkennen, habe ich meinem ImageDisplayViewController eine Superklasse zu meinem Haupt-ViewController gemacht.

Dies ist der Fehler, den ich erhalte.
Das Snapshot einer Ansicht, die nicht gerendert wurde, führt zu einem leeren Snapshot. Stellen Sie sicher, dass Ihre Ansicht mindestens einmal vor dem Snapshot oder Snapshot nach Bildschirmaktualisierungen gerendert wurde.

+0

Veröffentlichen Sie Ihren Code (Versuch) hier, damit andere Ihr Problem besser verstehen und Ihnen helfen können. – Amir

+0

Es klingt, als ob Sie das Segment programmgesteuert mithilfe von 'performSegueWithIndentifier' auslösen müssen, anstatt das Segment direkt über die Schaltfläche auszulösen. – Paulw11

Antwort

1

Keine Übergänge von Button zu ViewController zuweisen. Weisen Sie ViewController einen Übergang von ViewController zu. Wenn Sie nun ein Bild von der Kamera aufgenommen haben, werden Sie in dieser Methode zurück zur didfinishpicking Delegate-Methode weitergeleitet. Tun Sie self.performSegueWithIdentifer und wählen Sie Ihren Controller aus prepareforsegue. Sagen wir, Ihr Name ist Show.

Ich habe den Code für Sie umgeschrieben. Sagen wir, Ihre zweite VC ist displayImageVC. Erstellen Sie dort eine Eigenschaft als showImage vom Typ UIImage. Dann bereiten Sie das aufgenommene Bild vor.

+0

Ich habe den ViewController ViewView Controller hinzugefügt und diesen Code hinzugefügt und er sagt immer noch, dass ich versuche, Snapshot zu rendern und zu leeren. Muss ich diesen Code verzögern, bis das Bild irgendwie aufgenommen wurde? – Josh

+0

Wo bekommen Sie diesen Fehler? Können Sie Ihre Frage mit dem Fehler bearbeiten? Im Vorbereitungsabschnitt müssen Sie das Bild, das Sie von der Kamera aufgenommen haben, übergeben. Sie müssen die performesgue am Ende von didfinishPickingMediaWithInfo hinzufügen. –

+0

Okay, ich habe meine Frage bearbeitet – Josh

Verwandte Themen