2017-05-24 3 views
2

중복을 피하기 위해 사용자가 UIImagePickerContoroller에서 동일한 이미지를 두 번 선택하지 못하게하려면 어떻게해야합니까?UIImagePickerController에서 같은 사진을 두 번 선택하지 마십시오

URLReference를 사용하여 작업을 시도했지만 작동하지 않으므로 그 방법을 추측하고 있습니다. 당신이 photosURL에 URL을 추가하지 않은 것처럼

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) 
} 

덕분에,

+0

imagePicker에 대한 완성 된 코드를 추가하십시오. –

+0

각 이미지마다 'info [UIImagePickerControllerReferenceURL]'이 (가) 고유해야 이미지를 이미 선택했는지 확인할 수 있습니다. – xmhafiz

+0

이미 시도했는데 photosURL.contains (url)이 false를 반환하는지 확인하고 있습니다. –

답변

0

이 보인다? 이 밖으로 시도 :

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

또한 picker.dismiss 처음 일을 고려하고 이후에 이미지와 다른 논리를해야한다. 그렇게하면 사용자가 이미지를 여러 번 두드려서 여러 번 델리게이트 함수를 호출하는 것을 방지 할 수 있습니다.

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 
     } 
    } 
}