J'ai un UIAlertController sans boutons (j'utilise cette alerte comme s'il vous plaît patienter pendant que certaines données charge le message) que je présente dans la fonction viewDidLoad de mon contrôleur de vue. Après je vous présente l'alerte que je lance une fonction qui récupère des informations à partir d'une base de données et une fois que cela est fait, je veux rejeter l'alerte afin que l'utilisateur peut procéder cependant l'alerte ne semble pas rejeter après l'exécution:Cant Dismiss UIAlertController à partir de la fonction séparée
self.dismiss(animated: true, completion: nil)
I ont aussi essayé passer mon uialertcontroller comme argument à la fonction et l'exécution de la ligne suivante sans chance:
alertController.dismiss(animated: false, completion: nil)
EDIT: Ceci est ma fonction viewDidLoad ainsi que la fonction qui devrait rejeter l'alerte
override func viewDidLoad() {
super.viewDidLoad()
let alertController = UIAlertController(title: "Loading", message:
"This might take a moment", preferredStyle: UIAlertControllerStyle.alert)
self.present(alertController, animated: true, completion: nil)
hideAlert(alert: alertController)
}
func hideAlert(alert: UIAlertController) {
let hideAlertController = {() -> Void in
alertController.dismiss(animated: false, completion: nil)
}
FIRDatabase.database().reference().child("info").observeSingleEvent(of: .value, with: { (dataSnapshot) in
DispatchQueue.main.async {
hideAlertController()
}
})
}
Je viens de mise à jour le message original aussi comme je l'ai dit dans l'édition j'oublié de mentionner que j'essaie de rejeter l'alerte à l'intérieur d'une fermeture qui ne fonctionne sur un thread séparé mais après emballage l'appel de rejet dans l'async il n'a pas rejeté (j'ai également essayé d'enrouler l'appel à la fermeture avec l'async avec les mêmes résultats) – XvKnightvX