Pourquoi la photothèque ne s'affiche-t-elle pas lorsque je la sélectionne dans Swift?
En utilisant cette question, je demande à l'utilisateur de décider s'il souhaite utiliser l'appareil photo ou choisir une image de son téléphone:
//Show alert to select the media source type.
private func showAlert() {
let alert = UIAlertController(title: "Image Selection", message: "From where you want to pick this image?", preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Camera", style: .default, handler: {(action: UIAlertAction) in
self.imagePicker.sourceType = .camera
}))
alert.addAction(UIAlertAction(title: "Photo Album", style: .default, handler: {(action: UIAlertAction) in
self.imagePicker.sourceType = .photoLibrary
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .destructive, handler: nil))
self.present(alert, animated: true, completion: nil)
}
Ce que j'envoque en viewDidLoad
tant que tel:
override func viewDidLoad() {
super.viewDidLoad()
firstTextField.delegate = self
showAlert()
present(imagePicker, animated: true, completion: nil)
imagePicker.delegate = self
firstImageView.layer.cornerRadius = 8
}
Cependant, lorsque je teste cela, l'alerte apparaît et je choisis la bibliothèque de photos, mais la bibliothèque n'apparaît pas. J'ai essayé d'utiliser viewDidAppear
mais cela n'a pas fonctionné non plus. Aucune erreur n'apparaît, il masque simplement l'alerte et affiche le contrôleur de vue actuel.
Réponses
Vous imaginez peut-être que le code s'arrête lorsqu'une alerte apparaît. Mais ce n'est pas le cas! Et vous ne pouvez pas afficher simultanément deux contrôleurs de vue présentés. Mais c'est ce que vous essayez de faire.
Vous dites showAlert()
, alors maintenant votre alerte est active, puis vous dites immédiatement present(imagePicker)
, ce que vous ne pouvez pas faire car votre alerte est toujours active.
Utilisez les gestionnaires d'actions de l' showAlert
alerte pour présenter le sélecteur d'images. De cette façon, l'alerte se ferme et le sélecteur d'images s'ouvre.