Créer un contrôleur d'alertes personnalisé avec Swift

Ce que vous allez créer

introduction

UNE UIAlertController est utilisé pour afficher un message d'alerte dans une application. Par exemple, si une erreur se produit, l'alerte peut afficher une description et des boutons pour prendre des mesures supplémentaires. Vous pouvez utiliser des alertes pour que les utilisateurs se connectent ou s'inscrivent, affichent les résultats d'une action qu'ils ont effectuée ou offrent quelques options de paramètres supplémentaires, par exemple lorsque vous n'avez pas de place pour des boutons supplémentaires sur un écran mais que vous avez besoin que les utilisateurs puissent effectuer quelques actions supplémentaires sur un objet spécifique dans l'application.

Depuis iOS 9, Apple a remplacé UIAlertView avec UIAlertController. Vous n'êtes plus obligé d'ajouter le UIAlertViewDelegate dans votre classe et êtes maintenant en mesure de personnaliser votre alerte à votre guise. Vous pouvez personnaliser les polices de titre et de message, changer la couleur de fond et ajouter des champs de texte.Pour les besoins de ce didacticiel, nous avons créé une application de démonstration avec trois boutons, chacun déclenchant une alerte personnalisée différente. Vous pouvez le télécharger depuis le dépôt source du tutoriel sur GitHub. Voyons maintenant à quel point il est facile de créer ces alertes personnalisées.!

Alerte avec un champ de texte

La première alerte que nous allons construire a un Champ de texte attaché où vous pouvez entrer tout ce que vous voulez depuis le clavier iOS. Pour initialiser un UIAlertController, vous devez commencer par ces trois lignes:

 let alert = UIAlertController (titre: "Didacticiel AlertController", message: "Soumettre quelque chose", preferredStyle: .alert)

Dans la première ligne, nous définissons une simple chaîne comme titre de l'alerte. La deuxième ligne est la chaîne de message qui sera affichée juste en dessous du titre. Sur la troisième ligne, le type de l'alerte est défini sur .alerte. (Une autre option est .fiche action, mais vous ne pouvez pas personnaliser une feuille d’action comme une alerte.)

Dans un contrôleur d’alerte, les boutons sont définis comme suit: UIAlertAction éléments. Nous allons donc créer un UIAlertAction, qui sera le premier bouton en bas à gauche de notre alerte. 

 // bouton Submit let submitAction = UIAlertAction (titre: "Submit", style: .default, gestionnaire: (action) -> Annulation dans // Récupère le texte de 1st TextField, laissant textField = alert.textFields! [0] print (textField. texte!) )

Nous avons appelé cette action submitAction, mettre son titre à "Soumettre", étant donné le style par défaut, et pour son gestionnaire, imprimé le contenu d'un champ de texte. Comme les champs de texte de l'alerte ont un index, nous avons sélectionné le premier en position 0. Nous verrons plus loin comment ajouter plusieurs champs de texte à une alerte..

Une fois que vous avez appuyé sur le Soumettre bouton de votre alerte, la console Xcode imprimera le texte que vous avez entré et rejettera l’alerte.

Créons un bouton pour masquer notre alerte:

 // Bouton Annuler permet d'annuler = UIAlertAction (titre: "Annuler", style: .destructive, gestionnaire: (action) -> Annuler dans) 

Comme vous pouvez le constater, cette action n’a pas de gestionnaire. C'est parce que nous voulons rejeter l'alerte et ne pas effectuer d'autres actions. Ce bouton affichera un rouge Annuler titre parce que nous avons défini son style .destructeur, que l'API Apple comprendra.

Avant d'ajouter ces deux actions à l'alerte, nous devons initialiser notre champ de texte:

// Ajouter 1 textField et le personnaliser alert.addTextField (textField: UITextField) dans textField.keyboardAppearance = .dark textField.keyboardType = .default textField.autocorrectionType = .default textField.placeholder = "Tapez quelque chose ici" textField.clearButtonMode =. pendant l'edition

Si vous connaissez UITextFields, vous les reconnaîtrez comme des attributs standard qui définissent des propriétés telles que l’apparence et le type du clavier, le type de correction automatique, le message d’espace réservé et le bouton vide. (Nous avons configuré le bouton d'effacement pour qu'il apparaisse lorsque vous commencez à taper quelque chose.)

Maintenant, finissons notre alerte.

 // Ajoute des boutons d'action et présente l'alerte alert.addAction (submitAction) alert.addAction (cancel) present (alert, animated: true, complétion: nil)

le UIAlertController ne gère pas de tableaux d'actions, nous devons donc les ajouter un par un. Enfin, nous présentons l'alerte comme n'importe quel autre contrôleur avec le présent() une fonction.

Dans notre application de démonstration, nous avons intégré tout le code ci-dessus dans un Bouton, Donc, si vous exécutez l'application et appuyez dessus, vous devriez voir quelque chose comme ceci:

Si vous tapez quelque chose dans le champ de texte vide et appuyez sur Soumettre, votre console Xcode l'imprimera.

Alerte avec trois champs de texte

Maintenant, créons une nouvelle alerte avec plusieurs Champs de texte pour créer une invite de connexion. Nous allons recommencer avec les trois lignes qui initialisent notre alerte:

 let alert = UIAlertController (titre: "Exemple de connexion", message: "Insérer le nom d'utilisateur, le mot de passe et le numéro de téléphone", preferredStyle: .alert)

Nous avons encore deux Boutons, un pour effectuer une action de connexion et le bouton annuler:

 // Le bouton de connexion laisse loginAction = UIAlertAction (titre: "Connexion", style: .default, gestionnaire: (action) -> Annuler dans le texte // Obtenir le texte TextFields, laissez usernameTxt = alert.textFields! [0], laissez passwordTxt = alert. textFields! [1] let phoneTxt = alert.textFields! [2] print ("NOM D'UTILISATEUR: \ (usernameTxt.text!) \ nPASSWORD: \ (passwordTxt.text!) \ nNON DE TÉLÉPHONE: \ (phoneTxt.text!)" ))

Comme vous pouvez le constater, notre alerte comporte trois champs de texte. Ceux-ci sont indexés par leur position. Nous traiterons le premier en tant que nom d'utilisateur, le second en tant que mot de passe et le dernier en tant que numéro de téléphone.. 

Maintenant, ajoutez un Annuler bouton:

 // Bouton Annuler permet d'annuler = UIAlertAction (titre: "Annuler", style: .destructive, gestionnaire: (action) -> Annuler dans) 

Ensuite, nous allons créer et personnaliser le nom d'utilisateur Champ de texte:

 // Ajouter 1 textField (pour nom d'utilisateur) alert.addTextField (textField: UITextField) dans textField.keyboardAppearance = .dark textField.keyboardType = .default textField.autocorrectionType = .default textField.placeholder = "Tapez votre nom d'utilisateur" textField.textColor = UIColor.green 

Le code ci-dessus ressemble assez à notre premier exemple, avec l’ajout du textColor exemple.

De même pour le deuxième champ de texte:

 // Ajouter un second champ textField (pour le mot de passe) alert.addTextField (textField: UITextField) dans textField.keyboardAppearance = .dark textField.keyboardType = .default textField.placeholder = "Tapez votre mot de passe" textField.isSecureTextEntry = true textField.textColor = textUield .rouge 

Puisque les mots de passe doivent généralement être cachés, nous avons défini la isSecureTextEntry attribuer à notre Champ de texte. Cette commande remplacera les caractères que vous tapez avec des points, comme le font les champs de mot de passe sur un site Web. Nous avons également défini la couleur du texte sur rouge.

Et le troisième élément de texte, pour le champ numéro de téléphone:

 // Ajouter un 3ème textField (pour le numéro de téléphone) alert.addTextField (textField: UITextField) dans textField.keyboardAppearance = .dark textField.keyboardType = .numberPad textField.placeholder = "Entrez votre numéro de téléphone." textField.textColor = UIColor.blue textField.font = UIFont (nom: "AmericanTypewriter", taille: 14)

le keyboardType attribut est défini comme .pavé numérique ici, l’application n’affiche que le clavier numérique. Vous pouvez également remarquer que nous avons modifié la police de ce champ de texte en Machine à écrire américaine dans la dernière ligne de code.

Nous avons presque terminé, nous avons juste besoin d'ajouter nos actions et de présenter le AlertController encore:

 // Ajoute des boutons d'action et présente l'alerte alert.addAction (loginAction) alert.addAction (cancel) present (alert, animated: true, complétion: nil)

Maintenant, si vous exécutez l'application et déclenchez cette alerte, vous verrez quelque chose comme ceci:

Si vous essayez de saisir quelque chose dans les champs de texte, vous verrez le style personnalisé que nous avons appliqué.

Alerte Avec Quatre Boutons

Pour un dernier exemple, je vais vous montrer une alerte avec quatre actions et un style différent..

Comme nous allons personnaliser les attributs de titre et de message de cette alerte ultérieurement, notre code d'initialisation aura des chaînes vides pour l'instant:

 let alert = UIAlertController (titre: "", message: "", preferredStyle: .alert)

Voici comment nous allons configurer la police et la taille du titre et des champs de message:

 // Changer la police du titre et du message, laissez titleFont: [String: AnyObject] = [NSFontAttributeName: UIFont (nom: "AmericanTypewriter", taille: 18)! ] let messageFont: [String: AnyObject] = [NSFontAttributeName: UIFont (nom: "HelveticaNeue-Thin", taille: 14)! ] let attribuéTitle = NSMutableAttributedString (chaîne: "Plusieurs boutons", attributs: titleFont) let attribuéMessage = NSMutableAttributedString (chaîne: "Sélectionner une action", attributs: messageFont) alert.setValue (attributTitle, pourKey: "attributTitle") alert.setValue ( attributMessage, forKey: "attributMessage") 

Dans les deux premières lignes, nous définissons le nom et la taille de la police en tant que dictionnaire de NSFontAttributeName. Veuillez noter que vous devrez taper le bon nom PostScript de la police que vous souhaitez utiliser, sinon Xcode ne le reconnaîtra pas et affichera la police par défaut. Le site de polices iOS est une référence aux noms de police corrects..

Ici, nous allons également définir le titre et les chaînes de message avec une instance de NSMutableAttributedString

Créons quatre actions, y compris la valeur par défaut Annuler un:

let action1 = UIAlertAction (titre: "Action 1", style: .default, gestionnaire: (action) -> Annulation de l'impression ("ACTION 1 sélectionné!")) let action2 = UIAlertAction (titre: "Action 2", style: .default, gestionnaire: (action) -> Annulation de l’impression ("ACTION 2 sélectionnée!")) laissez action3 = UIAlertAction (titre: "Action 3", style: .default, gestionnaire: (action) - > Annuler à l'impression ("ACTION 3 sélectionnée!")) // Le bouton Annuler permet d'annuler = UIAlertAction (titre: "Annuler", style: .destructive, gestionnaire: (action) -> Annuler à) 

Avant d’attacher ces actions à notre alerte, appelons-les un peu.

 // Restyle la vue de l'alerte alert.view.tintColor = UIColor.brown // changer la couleur du texte des boutons alert.view.backgroundColor = UIColor.cyan // changer la couleur de fond alert.view.layer.cornerRadius = 25 // changer de rayon

Bien que le API UIAlertController est limité, pour que les développeurs ne puissent pas complètement changer sa structure par défaut, nous pouvons éditer son style comme nous l'avons fait avec le code ci-dessus.

Enfin, nous pouvons ajouter toutes les actions et présenter notre alerte:

 // Ajoute des boutons d'action et présente l'alerte alert.addAction (action1) alert.addAction (action2) alert.addAction (action3) alert.addAction (cancel) present (alert, animated: true, complétion: nil)

Maintenant, si vous exécutez votre code, vous obtiendrez quelque chose comme ceci:

Conclusion

Dans ce tutoriel, nous avons créé une série de logiciels personnalisés. UIAlertViews avec des champs de texte et un style personnalisé. J'espère que vous pourrez utiliser ces connaissances pour votre prochaine application iOS.

Apprendre Swift

Nous avons créé un guide complet pour vous aider à apprendre Swift, que vous commenciez juste à vous familiariser avec les bases ou que vous souhaitiez explorer des sujets plus avancés..

Vous pouvez également consulter certains de nos autres tutoriels sur le développement d'applications Swift et iOS..

  • Créer des applications iOS avec Swift

    iOS 10 vient de sortir, et avec lui, Swift 3. Swift est un nouveau langage de programmation d'Apple, spécialement conçu pour créer iOS, macOS et…
    Markus Mühlberger
    Rapide
  • Appliquer des filtres photo avec une image de base dans Swift

    Si vous souhaitez découvrir comment ajouter des effets photo dans iOS, vous êtes au bon endroit. Dans ce tutoriel, vous allez créer une application simple qui appliquera des…
    Francesco Franchini
    SDK iOS
  • iOS 10: Création d'interfaces de notification personnalisées

    Dans ce didacticiel, vous apprendrez à utiliser le nouveau framework UserNotificationsUI dans iOS 10 pour créer des interfaces personnalisées pour les applications locales et…
    Davis Allie
    SDK iOS
  • Commencer avec un modèle d'application iOS en 60 secondes

    CodeCanyon contient des centaines de modèles d'applications iOS que vous pouvez utiliser pour relancer votre développement. Cette vidéo vous montrera comment installer et personnaliser…
    Derek Jensen
    iOS