UIAlertController

Les UIAlertView et les UIActionSheet font parti des plus vieux composants d’UIKit. Dans iOS 8, Apple a revu la façon dont nous les créons et les utilisons grâce à une nouvelle classe : UIAlertController. Cette classe fournis une API moderne et unifié pour travailler avec ces contrôleurs. Ici nous allons voir la façon dont elle peut améliorer la capacité d’adaptation de l’interface utilisateur ainsi que la lisibilité du code.

Pour commencer voici un example de code :

@IBAction func afficherAlertControllerAction(sender: UIButton) {
  let controller = UIAlertController(
    title: "Comment allez vous ?",
    message: "Comment vous sentez vous ?",
    preferredStyle: .ActionSheet
  )

  controller.addAction(UIAlertAction(title: "Pas envie de répondre", style: .Cancel, handler: nil))

  controller.addAction(UIAlertAction(title: "Bien", style: .Default) { action in
    // Tant mieux
  })

  controller.addAction(UIAlertAction(title: "Mal", style: .Default) { action in
    // Mince
  })

  controller.popoverPresentationController?.sourceRect = sender.bounds
  controller.popoverPresentationController?.sourceView = sender

  presentViewController(controller, animated: true, completion: nil)
}

Tout d’abord nous créons le controller et nous définissons le style comme .ActionSheet. Nous pourrions aussi utiliser .Alert à la place et nos actions serait affichés dans une alerte.

Ensuite nous ajoutons des actions, chacun avec une fonction de retour qui est appelée quand l’action est sélectionnée. Si aucune méthode n’est définie (nil), il ne se passera rien si vous sélectionné l’action.

Après nous lions la sourceRect et sourceView au bouton sender qui est à l’origine de l’action. Cela permet à la flèche de notre « action sheet » de pointer dans le bon sens.

Pour finir nous affichons le contrôleur comme n’importe quel autre contrôleur.

Conclusion

J’espère que ce petit tuto vous aidera dans le développement de vos applications.

1 Etoile2 Etoiles3 Etoiles4 Etoiles5 Etoiles (1 votes, average: 5,00 out of 5)
Loading...
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestShare on RedditDigg this

Aucun commentaire

Time limit is exhausted. Please reload CAPTCHA.