【问题标题】:I'm trying to display an image from the photo library in a UIImageView我正在尝试在 UIImageView 中显示照片库中的图像
【发布时间】:2019-04-20 14:55:18
【问题描述】:

完整的错误是:

2018-11-17 11:48:21.587818-0700 TestApp[3763:162426] [发现] 发现扩展时遇到的错误:错误 Domain=PlugInKit Code=13 "查询已取消" UserInfo={NSLocalizedDescription=查询取消}

我的代码:

import UIKit

class CameraViewController: UIViewController {

@IBOutlet weak var captionTextView: UITextView!
@IBOutlet weak var photo: UIImageView!
@IBOutlet weak var shareButton: UIButton!
var selectedImage: UIImage?
override func viewDidLoad() {
    super.viewDidLoad()

    let tapGesturn = UITapGestureRecognizer(target: self, action: #selector(self.handleSelectPhoto))
    photo.addGestureRecognizer(tapGesturn)
    photo.isUserInteractionEnabled = true

}

@objc func handleSelectPhoto() {
    let pickerController = UIImagePickerController()
    pickerController.delegate = self
    present(pickerController, animated: true, completion: nil)
}

@IBAction func shareButton_TouchUpInside(_ sender: Any) {

}
}
 extension CameraViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    print("did Finish Picking Media")
    if let image = info["UIImagePickerControllerOriginalImage"] as? UIImage{
        selectedImage = image
        photo.image = image
    }
    dismiss(animated: true, completion: nil)
  }
}

【问题讨论】:

标签: swift xcode uiimageview ios12


【解决方案1】:

不要使用字符串"UIImagePickerControllerOriginalImage"作为信息字典的键,而是使用原始图像的信息键UIImagePickerController.InfoKey.originalImage

所以替换这个

if let image = info["UIImagePickerControllerOriginalImage"] as? UIImage {

有了这个

if let image = info[.originalImage] as? UIImage {

还将委托方法参数中的信息字典类型从[String : Any]替换为[UIImagePickerController.InfoKey : Any]

imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])

最后将委托方法前的private关键字替换为@objc

【讨论】:

  • 无法使用“UIImagePickerController.InfoKey”类型的索引为“[String : Any]”类型的值下标
  • @Bose 尝试编辑答案。您还必须更改委托方法信息参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 2020-11-28
  • 2021-12-25
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
相关资源
最近更新 更多