swift - 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)
}
}
解决方案
imagePickerController(_ picker: , didFinishPickingMediaWithInfo info:)
只返回 1 张图片UIImagePicker
。因此,您的上述逻辑是错误的,因为selectedImageFromPicker, selectedImageFromPicker2, and selectedImageFromPicker3
从 imagePicker 引用相同的图像。这就是为什么您会看到 3 个相同的图像。
我认为没有一种方法可以使用基本的图像选择器来选择多个图像。您可以做的是将所有图像加载到 collectionView 中,然后让用户选择单元格。或者您可以随时使用各种第三方库。