Я пытаюсь предоставить пользователю два варианта загрузки изображения: первый - библиотека фотографий, а второй - камера.У меня есть лист действий, где пользователь может выбрать способ загрузки изображения, но при нажатии на опцию камеры приложение камеры не открывается.Я добавил конфиденциальность, необходимую в файле plist.Это мой код действий:
extension MoreReportsVC: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func handleAddPhoto() {
showSimpleActionSheet(controller: self)
}
func showSimpleActionSheet(controller: UIViewController) {
let alert = UIAlertController(title: "Add a photo", message: "Please Select an option", preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "From photo library", style: .default, handler: { (_) in
self.imagePicker.getImage(fromSourceType: .photoLibrary)
}))
alert.addAction(UIAlertAction(title: "Open camera app", style: .default, handler: { (_) in
self.imagePicker.getImage(fromSourceType: .camera)
}))
alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: { (_) in
print("User click Dismiss button")
}))
self.present(alert, animated: true, completion: {
print("completion block")
})
}
}
Это мой код ImagePicker:
class ImagePickerManager: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
var placeholderImage: UIImageView?
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
//TODO:
}
func getImage(fromSourceType sourceType: UIImagePickerController.SourceType){
if UIImagePickerController.isSourceTypeAvailable(sourceType){
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
imagePickerController.sourceType = sourceType
self.present(imagePickerController, animated: true, completion: nil)
}
}
}
imagePicker в листе действий - это просто переменная ImagePickerManager.Приложение не аварийно завершает работу или что-то в этом роде, и оно попадает в метод getImage, но просто не открывайте камеру.
РЕДАКТИРОВАТЬ: Я думаю, что проблема в делегате = себя.Я должен быть VC, с которого я пытаюсь просмотреть сборщик изображений, если я не ошибаюсь.и в настоящее время это ImagePickerManager, но я не могу найти способ установить его в качестве моего VC.