首页 > 解决方案 > uiimagepicker 为我的 imageview 选择相同的图像

问题描述

晚上好,

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

默认设置

这就是我选择图像时发生的情况

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

标签: swiftxcodeuiimageuiimagepickercontroller

解决方案


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

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


推荐阅读