uiimagepicker为我的imageview选择相同的图像

时间:2018-11-19 00:13:44

标签: swift xcode uiimage uiimagepickercontroller

晚上好,

我有三个框,用户可以从中选择图像。我试图允许用户在每个框中上传多个图像,有点像火种或Instagram。当我选择图像时,由于某种原因,它只会选择同一图像的多个,而不是选择三个单独的图像。有没有办法单独选择图像?

The default setup

This is what happens when I select an image

扩展名newPostViewController:UIImagePickerControllerDelegate,UINavigationControllerDelegate {

@objc func handleSelectJobImageView() {
    let picker = UIImagePickerController()

    picker.delegate = self
    picker.allowsEditing = true

    present(picker, animated: true, completion: nil)
}
@objc func handleSelectJobImageView2() {
    let picker2 = UIImagePickerController()

    picker2.delegate = self
    picker2.allowsEditing = true

    present(picker2, animated: true, completion: nil)
}
@objc func handleSelectJobImageView3() {
    let picker3 = UIImagePickerController()

    picker3.delegate = self
    picker3.allowsEditing = true

    present(picker3, animated: true, completion: nil)
}

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

    var selectedImageFromPicker: UIImage?
    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
        selectedImageFromPicker = editedImage
    } else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
        selectedImageFromPicker = originalImage
        if let selectedImage = selectedImageFromPicker{
            JobImageView.image = selectedImage
             dismiss(animated: true, completion: nil)
        }
    }

    var selectedImageFromPicker2: UIImage?
    if let editedImage2 = info["UIImagePickerControllerEditedImage"] as? UIImage {
        selectedImageFromPicker2 = editedImage2
    } else if let originalImage2 = info["UIImagePickerControllerOriginalImage"] as? UIImage {
        selectedImageFromPicker2 = originalImage2
        if let selectedImage2 = selectedImageFromPicker2{
            JobImageView2.image = selectedImage2
             dismiss(animated: true, completion: nil)
        }
    }
    var selectedImageFromPicker3: UIImage?
    if let editedImage3 = info["UIImagePickerControllerEditedImage"] as? UIImage {
        selectedImageFromPicker3 = editedImage3
    } else if let originalImage3 = info["UIImagePickerControllerOriginalImage"] as? UIImage {
        selectedImageFromPicker3 = originalImage3
        if let selectedImage3 = selectedImageFromPicker3{
            JobImageView3.image = selectedImage3
             dismiss(animated: true, completion: nil)
        }
    }
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    print("canceled picker")
    dismiss(animated: true, completion: nil)
}
}

1 个答案:

答案 0 :(得分:0)

imagePickerController(_ picker: , didFinishPickingMediaWithInfo info:)仅从UIImagePicker返回1张图像。因此,您的上述逻辑是错误的,因为selectedImageFromPicker, selectedImageFromPicker2, and selectedImageFromPicker3引用了imagePicker中的同一图像。这就是为什么您看到3张相同的图像。

我认为无法使用基本的图像选择器来选择多个图像。您可以做的是将所有图像加载到collectionView中,然后让用户选择单元格。或者,您可以随时使用各种第三方库。