2017-10-10 7 views
-1

J'utilise un UIImageView pour changer l'image de l'utilisateur. Actuellement, l'utilisateur a la possibilité de supprimer l'image déjà présente. Pour cela, j'ai un UIButton nommé « Supprimer la photo » et dans l'action le code est écrit:UIImageView affiche l'image pour la première fois puis revient soudainement à l'ancienne image dans Swift3

@IBAction func removeUserPhoto(_ sender: UIButton) { 
    self.profilePhoto.image = UIImage (named: "defaultProfilePic") 
    self.photoChanged = true 
    let imageData: Data = UIImagePNGRepresentation(profilePhoto.image!)! 
    tempProfileImage = imageData 
    self.removePhoto.isHidden = true 
    } 

Lorsque je clique sur l'enlèvent l'image l'image est réglée sur la defaultProfilePic mais après quelques secondes, l'affichage de l'image affiche à nouveau l'ancienne image que l'utilisateur a supprimée.

Remarque: Aucun appel API n'a encore été appelé.

Les captures d'écran:

Initial Setup

Après avoir cliqué sur le bouton Supprimer:

enter image description here

quelques secondes après change à nouveau de retour à l'ancienne image automatiquement.

enter image description here

Pourquoi est-ce qui se passe? Et j'ai trouvé viewDidLayoutSubviews appelle deux fois ou plus. J'utilise Xcode 8.3 Beta.

+1

quelle est l'utilisation de cette vue de l'image 'tempProfileImage' –

+0

Il est stocké dans les paramètres utilisateur. C'est pour montrer l'image changée dans d'autres écrans rapidement. –

+0

Vous ne fournissez pas une description complète de votre problème. Vous devez décrire les différentes vues d'images, comment elles sont configurées dans le storyboard et afficher tout le code qui affiche/cache les différentes vues d'image. Lion a un bon point. Il semble que vous feriez mieux d'avoir une seule vue d'image qui affiche l'image actuelle. S'il s'agit d'un espace réservé, affichez-le, s'il s'agit d'une image personnalisée. –

Répondre

0

Vous devez supprimer l'image quelque chose comme,

yourImageView.image = UIImage.init(named: "your place holder image name") 

Je veux dire assigner l'image de votre place de titulaire à votre imageview! C'est tout! Pas besoin de prendre deux images vues!