Я пытаюсь отобразить изображение из библиотеки фотографий в UIImageView

Полная ошибка:

2018-11-17 11: 48: 21.587818-0700 TestApp [3763: 162426] [обнаружение] ошибок, обнаруженных при обнаружении расширений: Error 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)
  }
}

person fork    schedule 17.11.2018    source источник


Ответы (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

person Robert Dresler    schedule 17.11.2018
comment
Невозможно присвоить значение типа «[String: Any]» индекс типа «UIImagePickerController.InfoKey» - person fork; 17.11.2018
comment
@Bose попробуйте отредактированный ответ. Вы также должны изменить параметр информации метода делегата - person Robert Dresler; 17.11.2018