2017-04-14 5 views
0

Ich benutze einen UIImagePickerController in meinem Programm und es ist effektiv das Bild eines Bildansicht, die ich hinzugefügt habe. Jedes Mal, wenn ich diese App neu starte und zum Startbildschirm zurückkehre, wird sie automatisch auf das Standardbild zurückgesetzt, das ich zuvor hatte, und nicht auf das vom Benutzer ausgewählte Bild. Wie kann ich es so einrichten, dass es aufzeichnet, welches Bild zuletzt verwendet wurde, und es bei jedem Programmstart neu lädt?UIImagePickerController Bild in Swift

+0

Ich gehe davon aus Sie meinen einen Neustart der App (dh wo es keinen Speicher mehr hat) anstatt nur auf den Startbildschirm zu tippen und die App dann wieder hochzuladen? – toddg

+3

Sie müssen Ihr Bild irgendwo speichern und beim nächsten Start der App laden –

+0

@LeoDabus Wie kann ich das tun? Bitte führe mich. – Ajp

Antwort

1

Da die App nicht mehr genügend Arbeitsspeicher hat, benötigen Sie eine Art Persistenzmechanismus zum Speichern des Bildes. Der einfachste Weg dazu wäre, das Bild in UserDefaults zu speichern. Dies kann wie folgt erreicht werden:

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

    let image = info[UIImagePickerControllerEditedImage] as! UIImage 
    avatarImageView.image = image 
    UserDefaults.standard.set(UIImagePNGRepresentation(image), forKey: "avatarImage")  

    picker.dismiss(animated: true, completion: nil) 
} 

Dann, wenn Sie die App wieder öffnen müssen Sie prüfen, ob Sie zuvor habe eine AVATAR in UserDefaults gespeichert und laden Sie es von dort:

// Could be in viewDidLoad or wherever else you load your image 
override func viewDidLoad() { 

    if let imageData = UserDefaults.standard.object(forKey: "avatarImage") as? Data { 
     avatarImageView.image = UIImage(data: imageData) 
    } 
} 
Verwandte Themen