Ошибка «UIImage? is not convertible to UIImage» возникает, потому что вы пытаетесь присвоить опциональную переменную типа UIImage? к переменной типа UIImage. Это означает, что переменная может содержать либо изображение типа UIImage, либо значение nil.
Чтобы работать с UIImagePickerController в Swift 5, вам надо правильно получить изображение из выбранного источника.
Вот шаги, которые вы можете выполнить:
1. Создайте экземпляр UIImagePickerController:
let imagePicker = UIImagePickerController()
2. Установите делегатом экземпляра класса, который будет получать вызовы делегата в вашем коде, скажем, текущий ViewController:
imagePicker.delegate = self
3. Определите, какой тип источника вы хотите использовать для выбора изображения (например, фотоальбом или камера), и установите его соответствующим образом:
imagePicker.sourceType = .photoLibrary // выбор из фотоальбома // imagePicker.sourceType = .camera // выбор из камеры, но необходимо учитывать необходимые разрешения на использование камеры в вашем приложении
4. Проверьте, доступны ли заданный источник источник:
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { // Источник доступен } else { // Источник недоступен }
5. Вызовите контроллер видеоизображений для выбора изображения:
present(imagePicker, animated: true, completion: nil)
6. Чтобы получить выбранное изображение, реализуйте метод делегата imagePickerController(_:didFinishPickingMediaWithInfo:):
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let selectedImage = info[.originalImage] as? UIImage { // Изображение успешно выбрано // Вы можете использовать 'selectedImage' здесь или сохранить его в переменной класса для дальнейшего использования } dismiss(animated: true, completion: nil) }
7. Не забудьте реализовать метод делегата imagePickerControllerDidCancel(_:), чтобы закрыть контроллер изображений, если пользователь отменил выбор:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true, completion: nil) }
Это основные шаги, которые вам потребуются для работы с UIImagePickerController в Swift 5. Убедитесь, что вы подключили протоколы UIImagePickerControllerDelegate и UINavigationControllerDelegate, чтобы использовать делегаты. Вы также можете настроить appearance контроллера изображений, чтобы привести его в соответствие с дизайном вашего приложения.