Il y a eu un événement où plusieurs UIAlertViewControllers ont été mis en file d'attente et présentés en même temps, et j'en étais accro sans connaître les spécifications du titre.
// ① Alertes appelées pour la gestion des exceptions d'événement, etc.
func showCancelOperationDialog() {
let alertController = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
// OK action
let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: .default, handler: { _ in
self.moveToFirstViewController()
})
alertController.addAction(cancelAction)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
}
func showExceptionErrorDialog() {
let alertController = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alertController.addAction(cancelAction)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
}
let cancelAction: UIAlertAction = UIAlertAction (title: "Cancel", style: .cancel, handler: nil) // ② Alerte appelée par une erreur spécifique // OK action // Annuler l'action let cancelAction: UIAlertAction = UIAlertAction (title: "Cancel" ", style: .cancel, handler: nil) // Processus pour revenir à un contrôleur de vue spécifique
func moveToFirstViewController() {
guard let firstViewController = self.navigationController?.viewControllers.first as? FirstViewController else {
return
}
self.navigationController?.popToViewController(firstViewController, animated: true)
}
Si les deux alertes ci-dessus sont appelées en même temps et exécutées dans l'ordre de (1) ʻalert appelée dans le traitement des exceptions d'événement, etc.-> (2) ʻalert appelée avec une erreur spécifique
, popToViewController
est exécuté par l'action OK de (1) Non. Bien qu'elle soit appelée correctement, comme le titre l'indique, la transition d'écran n'est pas effectuée car la pile de UINavigationController ne peut pas être mise à jour lors de l'affichage avec present.
L'alerte s'affiche après la transition vers un contrôleur de vue arbitraire. Puisqu'il s'agit d'une transition d'écran comme traitement d'exception, l'ordre d'affichage transition-> alerte est préférable.