2017-05-24 1 views
2

Comment puis-je empêcher les utilisateurs de choisir deux fois la même image dans UIImagePickerContoroller pour éviter la duplication?empêche de choisir deux fois la même photo dans UIImagePickerController

J'ai essayé de le faire avec l'URLReference mais ça ne fonctionne pas donc je suppose que ce n'est pas le cas.

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

    if let url = info[UIImagePickerControllerReferenceURL] as? NSURL{ 
     if photosURL.contains(url){ 
      Utilities.showMessage(message: "photo Uploaded already", sender: self, title: ErrorTitle.FRIENDS, onDismissAction: nil) 
     } else { 
      if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
       photos.append(pickedImage) 
      } 
     } 
    } 
    dismiss(animated: true, completion: nil) 
} 

grâce,

+0

Ajoutez votre code fait pour imagePicker. –

+0

le 'info [UIImagePickerControllerReferenceURL]' devrait être unique pour chaque image afin que vous puissiez garder cela pour vérifier si elle est déjà sélectionnée – xmhafiz

+0

l'a déjà essayé, quand je vérifie si photosURL.contains (url) retourne false –

Répondre

0

On dirait que vous n'avez pas joint l'URL du photosURL? essayer ceci:

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

if let url = info[UIImagePickerControllerReferenceURL] as? NSURL{ 
    if photosURL.contains(url){ 
     Utilities.showMessage(message: "photo Uploaded already", sender: self, title: ErrorTitle.FRIENDS, onDismissAction: nil) 
    } else { 
     photosURL.append(url) 
     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      photos.append(pickedImage) 
     } 
    } 
} 
dismiss(animated: true, completion: nil) 
} 
0

Vous devriez également envisager de faire la picker.dismiss d'abord et faire l'autre logique avec l'image après. De cette façon, vous pouvez empêcher l'utilisateur d'appuyer plusieurs fois sur une image et d'appeler plusieurs fois la fonction de délégation.

func imagePickerController(_ picker: UIImagePickerController, 
            didFinishPickingMediaWithInfo info: [String : Any]) { 
    picker.dismiss(animated: true) { 
     if let pickedImage = (info[UIImagePickerControllerOriginalImage] as? UIImage) { 
      // do stuff with the picked image 
     } 
    } 
}