J'essaie d'afficher une image de la photothèque dans un UIImageView
L'erreur complète est:
2017-06-09 21: 55: 59.063307 + 0200 première application 2.0 [12873: 1120778] PhotoPicker erreur de découverte: Domaine d'erreur = Code PlugInKit = 13 "requête annulée" UserInfo = {NSLocalizedDescription = requête annulée}
Mon code est inclus ci-dessous:
import UIKit
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate{
@IBOutlet weak var pic: UIImageView!
@IBOutlet weak var text: UILabel!
var chosenImage : UIImage!
override func viewDidLoad() {
super.viewDidLoad()
pic.isUserInteractionEnabled = true;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [AnyHashable: Any]) {
var chosenImage = info[UIImagePickerControllerEditedImage]
self.pic!.image = chosenImage as! UIImage
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
@IBAction func tap(_ sender: Any) {
self.text.text = "Kreason"
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
}
Vous devez rendre explicite la référence Objective-C: @objc
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
image = chosenImage
self.performSegue(withIdentifier: "ShowEditView", sender: self)
dismiss(animated: true, completion: nil)
}
Je l'ai trouvé! Il essaie de vous dire que vous n'avez pas l'autorisation de "photos". Vous devez inclure le #import <Photos/Photos.h>
et demander une autorisation, par exemple, dans Objective-C.
J'espère que cela vous fera gagner du temps. J'ai passé deux jours complets à déboguer ça!
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
switch (status) {
case PHAuthorizationStatusAuthorized:
NSLog(@"PHAuthorizationStatusAuthorized");
break;
case PHAuthorizationStatusDenied:
NSLog(@"PHAuthorizationStatusDenied");
break;
case PHAuthorizationStatusNotDetermined:
NSLog(@"PHAuthorizationStatusNotDetermined");
break;
case PHAuthorizationStatusRestricted:
NSLog(@"PHAuthorizationStatusRestricted");
break;
}
}];
Je suis sûr que quelqu'un peut vous dire comment faire la même chose à Swift.
J'ai trouvé cette solution. Nous avons eu cette erreur en raison de ces deux raisons qui sont mentionnées ci-dessous.
Code d'autorisation
func checkPermission() {
let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus() switch photoAuthorizationStatus {
case .authorized: print("Access is granted by user")
case .notDetermined: PHPhotoLibrary.requestAuthorization({
(newStatus) in print("status is \(newStatus)") if newStatus == PHAuthorizationStatus.authorized { / do stuff here */ print("success") }
})
case .restricted: / print("User do not have access to photo album.")
case .denied: / print("User has denied the permission.")
}
}
didFinishPickingMediaWithInfo
Faux:
private func imagePickerController( picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
}
Droite
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
}
J'espère que cette solution vous aidera à résoudre cette erreur.
Si cela fonctionne pour vous, n'oubliez pas de marquer que c'est correct, cela aidera donc les autres à trouver le bon chemin.
J'ai essayé quelques réponses combinées sans grand succès.
En utilisant Swift 4, j'ai constaté que je devais m'assurer que les deux éléments suivants étaient implémentés pour que l'image soit sélectionnée et placée dans le sélecteur (notez que les erreurs "[découverte] rencontrées lors de la découverte d'extensions:
Error Domain = PlugInKit Code = 13 "requête annulée" UserInfo = {NSLocalizedDescription = requête annulée} "
message reste affiché dans la console, mais cela ne vous empêche pas d'ajouter une image). Peut-être est-ce un message qui entraîne le renvoi du sélecteur?
1) Le délégué pour la UIImagePickerController
est (UIImagePickerControllerDelegate & UINavigationControllerDelegate)?
. Il est donc nécessaire d’ajouter explicitement la UINavigationControllerDelegate
en tant que protocole:
class ViewController:UIViewController, UIImagePickerControllerDelegate,
UINavigationControllerDelegate { .... }.
2) Assurez-vous que le fichier info.plist a la clé Privacy - Photo library Usage Description
et la valeur String définis.
Bien sûr, vous devez vous assurer de créer une UIImagePickerController
et de définir son délégué égal à self
dans ViewDidLoad()
:
class ViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
let imagePickerController = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePickerController.delegate = self
}
...
}
J'ai résolu ce problème, appelez la fonction ci-dessous dans viewdidload ou viewWillAppear ou viewDidAppear pour vérifier les autorisations pour votre application.
func checkPermission() {
let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
switch photoAuthorizationStatus {
case .authorized:
print("Access is granted by user")
case .notDetermined:
PHPhotoLibrary.requestAuthorization({
(newStatus) in
print("status is \(newStatus)")
if newStatus == PHAuthorizationStatus.authorized {
/* do stuff here */
print("success")
}
})
print("It is not determined until now")
case .restricted:
// same same
print("User do not have access to photo album.")
case .denied:
// same same
print("User has denied the permission.")
}
}
Et pour utiliser la méthode ci-dessus, n'oubliez pas d'ajouter import Photos
en haut de la classe.
Si vous ne l'avez pas encore fait, essayez this .
Produit> Schéma> Modifier le schéma> Variables d'environnement
OS_ACTIVITY_MODE: disable
Cela résout mon problème.
* DELEGATE manquant * dans Swift 3
Dans mon cas, tous les réglages étaient corrects:
1 - Délégués (UIImagePickerControllerDelate, UINavigationControllerDelate);
2 - Autorisations déjà vérifiées;
3 - Plist déjà fait;
4 - Tout ce qui a été lu sur cette réponse, je l’ai fait;
Mais j'ai oublié d'implémenter pickerview.delegate = self
sur viewDidLoad
Parce que je copie et colle de mon autre viewController et oublie ça!
J'espère que cela aidera quelqu'un, examinez d'abord votre COPIE/PÂTE !!!
Ce n'est peut-être pas la réponse la plus directement utile - mais j'espère que cela vous aidera! Je suis sûr à 99% que ce message d'erreur ne vous indique pas réellement le problème. J'ai passé des heures à me tirer les cheveux au-dessus du même problème.
1) J'avais l'autorisation d'imprimer des photos sur la console lorsque je lancais mon sélecteur, 2) je pouvais naviguer et choisir une photo assez facilement, et 3) lorsque je revenais à ma vue lorsque je rejetais le sélecteur, l'image de mon bouton n’a pas été mis à jour avec la nouvelle photo ... et le seul indice que j’ai eu au problème est le message d’erreur exact que vous recevez.
Il s'avère que je codais en dur une image de paramètre fictif dans ViewWillAppear au lieu de ViewDidLoad. Chaque fois que le sélecteur renvoyait, il appelait ViewWillAppear et remplaçait l'image que je choisissais par mon image codée en dur. J'ai corrigé ce problème et bien sûr - tout fonctionne correctement maintenant ... et je vois toujours ce message d'erreur chaque fois que je reviens du sélecteur.
Je vous recommande de chercher un autre problème que ImagePicker et vous le trouverez probablement.
XCODE 10.1/Swift 4.2:
Ajouter les autorisations requises (autres mentionnées)
Implémentez cette fonction de délégué:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
self.imgView.contentMode = .scaleAspectFit
self.imgView.image = pickedImage
}
dismiss(animated: true, completion: nil)
}
Cela corrige le problème dans Swift 4:
Changer le code ci-dessous
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {}
pour ça:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {}
Swift 4.2 update:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){}
J'ai reçu le même message lorsque j'essayais de présenter un autre contrôleur à partir du rappel du sélecteur imagePickerController
. La solution qui a fonctionné pour moi était de déplacer mon code dans le rappel d'achèvement à partir de la méthode de renvoi du sélecteur.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
picker.dismiss(animated: true) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
let cropController:CropViewController = CropViewController(croppingStyle: .circular, image: pickedImage)
cropController.delegate = self
self.present(cropController, animated: true, completion: nil)
}
}
}
Assurez-vous de sous-classer les deux: UIImagePickerControllerDelegate, UINavigationControllerDelegate
.
Aussi, n'oubliez pas de définir le délégué:
let picker = UIImagePickerController()
picker.allowsEditing = true
picker.sourceType = .photoLibrary
picker.delegate = self //Don't forget this line!
self.present(picker, animated: true, completion: nil)
Crédits à cette source .
Cela m'a laissé perplexe, mais la réponse sur le lien ci-dessous a fonctionné pour moi. L'erreur est partie et l'image s'affiche comme prévu
Comme l'une des réponses ci-dessus, vous devez avoir (_ picker...
mais aussi @objc
avant la fonction.
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
...
}
Assurez-vous d’ajouter internal func
au début, puis la minuscule après la parenthèse (_ picker: UIImagePickerController…
, puis passez de AnyObject
à Any
]
Vérifier le code ci-dessous:
internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
userPhoto.image = pickedImage
}
self.dismiss(animated: true, completion: nil)
}
Dans mon cas, cette erreur me causait parce que je présentais un contrôleur de sélecteur d'images sans d'abord vérifier si l'utilisateur avait autorisé l'accès aux images. Ailleurs dans mon code, l'utilisateur avait donné l'autorisation, je pense donc que tout ce que j'avais à faire était d'importer des photos. Cependant, étant donné qu'ils "n'ont peut-être" pas accordé la permission à ce moment-là dans l'application, cela a été ajouté juste avant que je présente le contrôleur de sélection d'images.
// request photos permission if permission has not been granted
if PHPhotoLibrary.authorizationStatus() != PHAuthorizationStatus.authorized {
PHPhotoLibrary.requestAuthorization({ (status: PHAuthorizationStatus) in
})
}
Si cette réponse semble superflue, je m'excuse, mais je devais rassembler quelques réponses différentes pour que ma solution fonctionne. Cela aidera peut-être quelqu'un d'autre à utiliser Swift 4.
Corrigé en réglant le délai d'une seconde lors du réglage de l'image.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
picker.dismiss(animated: false, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
self.discussionImage.image = image
})
}
}
C'est ce que j'ai fait et cela a résolu mon problème.
J'espère que cela t'aides!
utiliser ce code
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
S'il vous plaît vérifier par étapes comme suit:
A accès à l'album:
func authorizeToAlbum(completion:@escaping (Bool)->Void) {
if PHPhotoLibrary.authorizationStatus() != .authorized {
NSLog("Will request authorization")
PHPhotoLibrary.requestAuthorization({ (status) in
if status == .authorized {
DispatchQueue.main.async(execute: {
completion(true)
})
} else {
DispatchQueue.main.async(execute: {
completion(false)
})
}
})
} else {
DispatchQueue.main.async(execute: {
completion(true)
})
}
}
UIImagePickerController actuel
self.authorizeToAlbum { (authorized) in
if authorized == true {
let picker = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = false
picker.sourceType = .photoLibrary
self.present(picker, animated: true, completion: nil)
}
}
L'étape clé, assurez-vous que la méthode déléguée est comme suit strictement
// MARK: - UIImagePickerControllerDelegate Methods
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
self.pickedImage = pickedImage
if let finalImage = handleImage(originalImage: self.pickedImage!, maskImage: self.maskImage!) {
self.imageView.image = finalImage
}
}
dismiss(animated: true, completion: nil)
}
Cela a résolu mon erreur:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
addPhotoBtn.setImage(pickedImage, for: .normal)
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
Trouver la solution à ce problème m'a pris pour toujours. Il semble que le problème est que la fonction imagePickerController de UIImagePickerControllerDelegate est introuvable. Si vous avez défini le délégué correctement et qu'il a cessé de fonctionner après la mise à niveau vers Swift 4, le problème est probablement que vous ne l'avez pas rendu accessible à Objective-C en utilisant @objc, requis depuis Swift 4.
Ce doit être:
@objc func imagePickerController (...
au lieu de
func imagePickerController(...
Cette erreur "Error Domain = PlugInKit Code = 13" a semé la confusion dans l'esprit de beaucoup de gens, même s'il semble s'agir d'un message de débogage inoffensif Apple. J'avais du mal à obtenir l'image que j'avais choisi de définir dans mon interface utilisateur et je pensais que cette erreur était le problème, mais que c'était quelque chose d'un peu plus subtil.
J'ai mon contrôleur de sélecteur d'images dans un fichier séparé du contrôleur de vue qui le présente.
MyViewController.Swift
class MyViewController: UIViewController {
@IBOutlet weak var profileImage: UIImageView!
...
}
extension MyViewController: ImagePickerDelegate {
func didSelect(image: UIImage?) {
self.profileImage.image = image
}
}
ImagePicker.Swift
open class ImagePicker: NSObject {
...
private func pickerController(_ controller: UIImagePickerController, didSelect image: UIImage?) {
controller.dismiss(animated: true, completion: {self.delegate?.didSelect(image: image)}
)
}
}
La plupart des didacticiels et des réponses ont la fin d'exécution définie sur nil. Toutefois, si vous définissez la complétion sur nil et appelez la méthode didSelect du délégué séparément, la méthode sera appelée mais l'image ne sera pas définie. Assurez-vous donc de bien utiliser la complétion de la commande 'ignore'.
Et encore une fois, je sais que cette réponse n’est peut-être pas directement liée à la question initiale, mais j’ai le sentiment que beaucoup de gens viennent ici pour cette question et que les solutions proposées n’aident pas. La raison en est que la plupart des personnes qui donnent des réponses ont leur contrôleur de sélecteur d’images dans la même classe que leur contrôleur de vue principal et n’ont donc pas besoin d’utiliser un achèvement.
L'erreur se produit également lorsque vous n'avez pas configuré les autorisations d'utilisation de la photothèque dans votre fichier Info.plist
.
Vous devez ajouter Privacy - Photo Library Usage Description
dans le Info.plist
avec un String qui apparaîtra lorsque votre application tentera pour la première fois d'accéder à la bibliothèque de photos de l'utilisateur.
Les derniers ajustements Info.plist
devraient ressembler à ceci:
De mon côté, UINavigationControllerDelegate
délégué est manquant.
class YourViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate
J'ai la même erreur et je l'ai corrigé de cette façon:
obtenir un objet image de manière différente dépend de UIImagePickerController de permettre l’édition est vrai ou faux
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if isImagePickerAllowEditing {
sourceImage = info[UIImagePickerControllerEditedImage] as? UIImage
} else {
sourceImage = info[UIImagePickerControllerOriginalImage] as? UIImage
}
....
}
Et bien sûr, demandez la permission d'accéder d'abord à la photothèque en tant que commentaires ci-dessus.
Swift 5 et ci-dessus:
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var pic: UIImageView!
@IBOutlet weak var text: UILabel!
var chosenImage : UIImage!
override func viewDidLoad() {
super.viewDidLoad()
pic.isUserInteractionEnabled = true
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.editedImage] as? UIImage else { return }
dismiss(animated: true)
chosenImage = image
**pic.image = chosenImage**
}
@IBAction func tap(_ sender: Any) {
self.text.text = "Kreason"
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
//imagePicker.dataSource = self
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true)
}
}
j'ai trouvé la solution de IMage PickerView .....
@IBOutlet weak var myImageView: UIImageView!
var imagePicker = UIImagePickerController()
@IBAction func selectImage(_ sender: Any) {
let myPickerController = UIImagePickerController()
myPickerController.delegate = self;
myPickerController.sourceType = UIImagePickerControllerSourceType.photoLibrary
self.present(myPickerController, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print(info)
var selectedImageFromPicker: UIImage?
if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage
{
selectedImageFromPicker = editedImage as! UIImage
}else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage{
selectedImageFromPicker = originalImage as! UIImage
}
dismiss(animated: true, completion: nil)
if var selectedImage = selectedImageFromPicker
{
myImageView.image = selectedImage
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
Utilisez didFinishPickingMediaWithInfo
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
self.dismiss(animated: true, completion: nil)
var chosenImage = info[UIImagePickerController.InfoKey.editedImage] as! UIImage
userProfileImage.image = chosenImage
uploadImage(chosenImage)
}
Je suis tombé sur le même problème. Aucune des suggestions mentionnées ci-dessus n'a fonctionné pour moi. Cependant, je l'ai résolu, en appelant explicitement le picker.dismiss et en le renvoyant. Je ne comprends pas pourquoi j'ai fait des appels comme ça, mais cela a fonctionné pour moi.
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print("Image picked")
picker.dismiss(animated: true, completion: nil)
dismiss(animated: true) {
print("dismissed")
self.delegate?.presentEditor(img: (info[UIImagePickerControllerOriginalImage] as? UIImage)!, id: self.id!)
}
}
Dans mon cas en tant que Swift, la gestion de la mémoire d'allocation semble être optimisée et corrigée par Apple Team. Mon code fonctionnait parfaitement jusqu’à la mise à jour Swift et j’ai constaté que mon "erreur" était de ne pas conserver le sélecteur, mais cela fonctionnait depuis des lustres sans la rétention. Voici donc une solution prête à fonctionner.
// Add Privacy - Photo Library Usage Description to your info.plist
<key>NSPhotoLibraryUsageDescription</key>
<string>APPNAME need to access your pictures to violate your privacy :P</string>
Et
import Photos
class MyImageSelector: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
var picker = UIImagePickerController()
// Make sure to retain this picker var until the picker returned
func checkPermission() {
let call = self.presentAuthorized
let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
switch photoAuthorizationStatus {
case .authorized:
print("Access is granted by user")
showPicker()
case .notDetermined:
PHPhotoLibrary.requestAuthorization({ newStatus in
print("status is \(newStatus)")
if newStatus == PHAuthorizationStatus.authorized {
/* do stuff here */
print("success")
showPicker()
}
})
case .restricted:
print("User do not have access to photo album.")
case .denied:
print("User has denied the permission.")
}
}
func showPicker() {
picker = UIImagePickerController()
picker.allowsEditing = true
picker.sourceType = .photoLibrary
picker.delegate = self //Don't forget this line!
self.present(picker, animated: true, completion: nil)
}
@objc public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// DO something with picture
}
@objc public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// User cancelled the pick
}
}
cliquez sur imageView pour charger l'image de la photothèque et afficher l'aperçu sur la même imageview. sur Swift 4
let imagePicker = UIImagePickerController()
@IBOutlet weak var userImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
let tap = UITapGestureRecognizer(target: self, action: #selector(SignUpViewController.click))
userImage.addGestureRecognizer(tap)
userImage.isUserInteractionEnabled = true
}
@objc func click()
{
imagePicker.allowsEditing = false
imagePicker.sourceType = .photoLibrary
present(imagePicker, animated: true, completion: nil)
}
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
userImage.contentMode = .scaleAspectFit
userImage.image = chosenImage
}
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
J'ai lu toutes ces réponses et un peu modifié ici et pas besoin de rejeter, cela a fonctionné pour moi, Merci d'autres qui ont répondu ici.
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print("########### media picked")
picker.dismiss(animated: true, completion: nil)
let img = (info[UIImagePickerControllerOriginalImage] as? UIImage)!
//set img -picked image to "profileImage" UIimageView
//use image here
self.profileImage.image = img
}
}
Essayez de ne pas utiliser la méthode UIImagePickerController à l’intérieur de la méthode, mais de la transformer en variable de classe et de ne la créer qu’une fois.
J'ai eu le même problème que vous quand j'ai oublié de définir un délégué pour UIImagePickerController
Avait ce même problème sur Swift 4.2 et Xcode 10.0 . Bien que le sélecteur d'images fonctionne correctement, Xcode a affiché cette erreur sur la console. Pour se débarrasser de cela: