Постоянно получаю сообщение об ошибке: «Обнаружение расширения UIImagePickerController завершилось ошибкой: (ноль)» - PullRequest
2 голосов
/ 11 февраля 2020

Я пытаюсь использовать UIImagePickerController. Раньше он работал нормально, но внезапно перестал работать.

В настоящее время у меня есть противоречивые результаты (иногда это работает, но иногда нет). Вот методы, связанные с UIIMagePickerController.

Что не так?

 @IBAction func uploadImageTapped(_ sender: UIButton) {

    let pickerView = UIImagePickerController()

    // Set cameraroll sor chooseing a photo
    // choose '.camera' if you want to take the picture
    pickerView.delegate = self
    pickerView.sourceType = .photoLibrary

    self.present(pickerView, animated: true, completion: nil)
}
.
.
.
extension RetailerProfileViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

// method that will be called when user choose the pic
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    // get the info of photo
    let image = info[.originalImage] as! UIImage
    // show it
    storeImage.image = image

    // dismiss the photo library
    self.dismiss(animated: true)
}

}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Вы можете проверить здесь. { ссылка }

Я проверил детали, и в вашей реализации нет проблем. Я также проверил официальный образец яблока здесь. https://developer.apple.com/documentation/uikit/uiimagepickercontroller/customizing_an_image_picker_controller Тот же результат!

Наконец, это проблема, связанная с iOS Симуляторами (версия 11.3.1). Я просто хочу, чтобы вы, ребята, не тратили время на это. Двигайтесь вперед.

Спасибо.

0 голосов
/ 11 февраля 2020

Попробуйте сделать UIImagePickerController переменной класса и создать ее только один раз. Не инициализируйте его при каждом нажатии. Надеемся, что эта проблема решится, используйте этот код

picker.dismiss(animated: true, completion: nil) // dismiss picker
        DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
            storeImage.image = image
        })
...