2017-07-13 1 views
1

Actuellement, je peux demander à l'utilisateur de prendre une photo avec succès en utilisant l'appareil photo et de télécharger son image dans une vue d'image. Cependant, si l'utilisateur quitte ce contrôleur de vue lorsqu'il finit par revenir, la photo n'est plus dans cette image. Y at-il de toute façon que je suis capable de sauvegarder la photo de sorte qu'une fois qu'une photo est prise et mise dans cette vue d'image elle est là jusqu'à ce que l'utilisateur prenne une image différente pour la remplacer?Enregistrement de UIImageView localement

import UIKit 

class ArsenalViewController: UIViewController, 
UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet var ball1: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
@IBAction func addPhoto1(_ sender: Any) { 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){ 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera 
     imagePicker.allowsEditing = false 
     self.present(imagePicker, animated: true, completion: nil) 
    } 
} 
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     ball1.contentMode = .scaleToFill 
     ball1.image = pickedImage 
    } 
    picker.dismiss(animated: true, completion: nil) 
} 

Répondre

0

Vous devez d'abord enregistrer les données d'image quelque part (à savoir UserDefaults, Core Data, une base de données), puis le récupérer. UserDefaults est facile, essayez ceci:

//Encoding 
    let imageData:NSData = UIImageJPEGRepresentation(pickedImage!)! as NSData 

    //Saved image 
    UserDefaults.standard.set(imageData, forKey: "savedImage") 

    //Decode 
    if let data = UserDefaults.standard.object(forKey: "savedImage") as! NSData{ 
     myImageView.image = UIImage(data: data as Data) 
    } 

encodage et de l'image d'économie devrait se produire juste après la mise à jour de votre image et le décodage doit être fait une fois la vue a chargé tous ses éléments (méthode viewDidAppear). Après le codage et l'enregistrement de l'image une fois, vous pouvez le décoder à tout moment, même si l'utilisateur a quitté le VC et est revenu.

+0

Je reçois toujours un message d'erreur indiquant Impossible de convertir la valeur du type 'UIImageView!' à l'argument attendu type 'UIImage' lors de l'implémentation de la première ligne sous // Encodage –

+0

Accéder à l'image avec: imageView.image (c'est-à-dire ball1.image) –

+0

Je voudrais vous demander votre avis sur l'implémentation du code ci-dessus. Il travaille avec un léger problème. Lorsque l'utilisateur quitte ce VC et retourne l'image a été tourné pour une raison quelconque une explication? –