• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 26/02/2020

Présentez une alerte à l’utilisateur

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Notre formulaire a une bonne tête et il est fonctionnel, mais il reste quelque chose que nous n'avons pas encore abordé : les erreurs.

En effet, dans tout formulaire, il peut y avoir des erreurs et il faut les traiter en alertant l'utilisateur que les données qu'il a rentrées ne sont pas valides.

Par exemple, dans notre formulaire, nous ne souhaitons pas que les chiens mineurs (de moins de trois ans) puissent accéder à notre site de rencontre. Donc nous allons vérifier cela avant de les faire passer sur la page SuccessViewController.

Et pour ceux qui ne sont pas majeurs, nous allons leur présenter une alerte.

Les alertes en iOS

Sur votre iPhone, vous avez sans doute déjà rencontré des alertes. Elles permettent d'interrompre l'expérience d'une application pour poser une question à l'utilisateur ou attirer son attention sur quelque chose. Elles ressemblent à ceci :

Vous en avez certainement déjà croisé. Elles sont gérées par une classe nommée UIAlertController que nous allons découvrir dans ce chapitre.

Création du modèle

Nous allons afficher ces alertes selon certaines conditions. Et il n'aura pas échappé à votre vigilance que nous nous apprêtons à faire de la logique. Et qui dit logique dit ?

Modèle !

Oh... C'est tellement touchant... J'en ai les larmes aux yeux :honte: ! Nous allons en effet devoir écrire un peu de logique dans le modèle.

Et vous allez faire ça avec un exercice ! Il est quasiment obligatoire et en tout cas très très recommandé de le faire. Car non seulement vous allez découvrir la notion de valeur associée dans les énumérations, mais en plus vous comprendrez la suite bien plus facilement si vous le faites !

Donc à vous de jouer !

Console de code
Houston... ?
Il semblerait que votre ordinateur ne soit pas connecté à Internet.
Vous n'êtes pas connecté

Connectez-vous pour accéder aux exercices de codes et testez vos nouvelles compétences.

Pensez à vous entraîner avant de terminer ce chapitre.

Implémentation du switch

Avant d'appeler notre méthode performSegue dans le contrôleur, nous allons avoir besoin d'évaluer le statut de notre objet dog. Je vous propose d'écrire une méthode pour faire cela :

@IBAction func validate() {
createPetObject()
checkPetStatus()
}
// (...)
private func checkPetStatus() {
}

Bien. Maintenant, nous allons vérifier le statut. La propriété status de Pet est une énumération, donc pour l'évaluer, nous allons faire un switch :

private func checkPetStatus() {
switch dog.status {
case .accepted:
performSegue(withIdentifier: "segueToSuccess", sender: nil)
case .rejected(let error):
// Il y a une erreur
}
}
case .rejected(let error):

Lorsqu'on fait un switch sur une énumération qui a une valeur associée, on peut récupérer cette valeur associée avec la syntaxe ci-dessus.

Dans le cas où le statut est bon, on passe à la page suivante avec performSegue. S'il y a une erreur, on va l'afficher avec une alerte.

Affichage de l'alerte

Pour afficher une alerte, nous allons utiliser la classe UIAlertController. On commence par initialiser une instance de cette classe comme ceci :

let alertVC = UIAlertController(title: "Erreur", message: "Message d'erreur", preferredStyle: .alert)

Détaillons ça :

  • title contient le titre du message

  • message contient le corps du message

  • preferredStyle correspond au style désiré de l'alerte. On en reparle juste en dessous. Choisissez alert pour le moment.

Ensuite, nous allons créer une ou plusieurs actions. Ces actions correspondent aux boutons en bas de l'alerte :

let action = UIAlertAction(title: "OK", style: .cancel, handler: nil)

Regardons cela :

  • title correspond au titre sur le bouton.

  • style correspond au style du bouton. Il y en a plusieurs aussi et on en parle juste après. Choisissez cancel pour le moment.

  • handler : il s'agit d'un bloc qui permet de rajouter du code à exécuter lors de l'appui sur le bouton. Vous pouvez y mettre ce que vous voulez.

Ensuite, il faut ajouter l'action à notre alerte via la méthode addAction de UIAlertController :

alert.addAction(action)

Enfin, nous n'avons plus qu'à présenter l'alerte avec la méthode present de UIViewController :

present(alert, animated: true, completion: nil)

On a fait le tour de la théorie, du coup la mise en pratique donne ceci :

private func checkPetStatus() {
switch dog.status {
case .accepted:
performSegue(withIdentifier: "segueToSuccess", sender: nil)
case .rejected(let error):
presentAlert(with: error)
}
}
private func presentAlert(with error: String) {
let alert = UIAlertController(title: "Erreur", message: error, preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
}

J'ai créé une méthode presentAlert qui prend en paramètre le message d'erreur error contenu comme valeur associée dans l'énumération status. Ce paramètre est utilisé comme message de notre UIAlertController. Le reste devrait être à peu près limpide, sinon n'hésitez pas à reprendre les paragraphes précédents.

Les styles d'alertes

Comme promis, nous allons revenir sur les différents styles d'alertes que vous pouvez utiliser.

Il y a deux styles d'alertes : .alert et .actionSheet. Vous les avez ci-dessous :

Avec cela vous pouvez combiner trois styles de boutons :

  • .default : le style par défaut.

  • .destructive : ce style indique que l'action risque de modifier ou supprimer des données.

  • .cancel : ce style indique que l'action annule l'opération et laisse les choses inchangées.

En résumé

  • Lorsque vous faites la validation d'un formulaire, n'oubliez pas que la logique doit se trouver côté modèle !

  • Un cas d'une énumération peut avoir une valeur associée.

  • Les alertes permettent d'interrompre l'expérience d'une application pour afficher un message ou poser une question à l'utilisateur. Le code général pour les afficher est le suivant :

let alert = UIAlertController(title: "Erreur", message: "Message", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
  • Il existe deux types d'alertes et trois styles de boutons.

Dans le prochain chapitre, je vous propose un petit bonus : vous allez découvrir les extensions, une fonctionnalité de Swift bien pratique !

Exemple de certificat de réussite
Exemple de certificat de réussite