2017-05-24 9 views
2

重複を避けるために、ユーザーがUIImagePickerContorollerで同じ画像を2回選んで表示しないようにするにはどうすればよいですか?UIImagePickerControllerで同じ写真を2回ピッキングしないようにする

私はURLReferenceでそれをやってみましたが、うまく動作しないので、私はその方法ではないと推測しています。

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

あなたは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 { 
     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 
     } 
    } 
} 
関連する問題