2016-04-26 26 views
0

Mein ViewController - Ich wähle gerade ein Bild aus und aktualisiere dann imageView. Immer noch, wenn ich die Ansicht verlasse, ist die ImageView wieder auf "face-unknown" eingestellt, da newImage nicht vorhanden ist.Variable ändert sich nicht, wenn sich eine Ansicht ändert

Warum erinnert sich die Variable newImage nicht an das Bild, nachdem sich die Ansicht geändert hat?

var newImage: UIImage! 
@IBOutlet weak var imageView: UIImageView! 
var imagePicker = UIImagePickerController() 


override func viewDidLoad() { 
    super.viewDidLoad() 
    if((newImage == nil)){ 
     imageView.image = UIImage(named:"face-unknown")! 
    }else{ 
     imageView.image = newImage 
    } 

} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    if let possibleImage = info["UIImagePickerControllerEditedImage"] as? UIImage { 
     imageView.image = resizeImage(possibleImage,newWidth: 150) 
     newImage = resizeImage(possibleImage,newWidth: 150) 
    } else if let possibleImage = info["UIImagePickerControllerOriginalImage"] as? UIImage { 
     imageView.image = resizeImage(possibleImage,newWidth: 150) 
     newImage = resizeImage(possibleImage,newWidth: 150) 
    } else { 
     return 
    } 
+0

Das hängt davon ab, was Sie mit "Verlassen der Ansicht" meinen. Wenn Sie bei der Rückkehr einen neuen View-Controller erstellen, weiß er nicht, was in Variablen gespeichert wurde, die zum alten Controller gehörten. –

Antwort

0

Ihr Imageview ist zurück zu „face-unbekannt“, weil die viewDidLoad() Methode nur einmal aufgerufen wird. Nicht, weil dein UIImage null ist. Versuchen Sie stattdessen, Ihre UIImageView in der viewWillAppear() Methode zu aktualisieren, es sollte funktionieren

+0

Hat das mit override func viewWillAppear (animiert: Bool), aber das hat nicht funktioniert. – tesgoe

+0

Können Sie mit den Breakpoints überprüfen, ob Ihre Delegate-Methode 'func imagePickerController (Picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject])' den Namen Ihres 'newImage' ändert? – AnthonyR

+0

Es ändert den Wert von 'newImage'. Ich denke, die Antwort ist in @ phillip-Mühlen Kommentar. – tesgoe

Verwandte Themen