UIActionSheet et UIActionSheetDelegate

Dans le tutoriel iOS SDK de ce débutant, nous verrons comment implémenter UIActionSheet et UIActionSheetDelegate. Cette classe vous permettra d’inviter facilement l’utilisateur à entrer en affichant une liste d’options de menu..


Étape 1: Configuration du projet

Lancez Xcode et cliquez Fichier> Nouveau> Projet. Cliquez sur "Application" dans le volet iOS à gauche, puis cliquez sur l'icône "Application à vue unique". Cliquez sur Suivant".

Dans le champ "Nom du produit", tapez "ActionSheetDemo" et entrez un nom pour votre identificateur d'entreprise, tel que "com.mobiletuts". Choisissez "iPhone" dans le menu "Famille de périphériques". Décochez les cases "Utiliser les storyboards" et "Inclure les tests unitaires", puis cochez la case "Utiliser le comptage automatique des références". Cliquez sur "Suivant", choisissez un emplacement pour enregistrer votre projet et cliquez sur "Créer".


Étape 2: Création d'interface

Tout d'abord, nous déclarons et définissons une méthode qui affichera la fiche d'action. Cliquez sur le fichier "ViewController.m" et ajoutez la déclaration de méthode et la définition suivantes:

 @interface ViewController () - (void) showActionSheet: (id) expéditeur; // Déclare une méthode pour afficher la feuille d'action @end @implementation ViewController… - (void) showActionSheet: (id) sender … 

Cherchez le viewDidLoad: méthode dans le même fichier et ajoutez le code suivant pour créer un bouton par programme:

 UIButton * button = [UIButton buttonWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20.0f, 186.0f, 280.0f, 88.0f); [button setTitle: @ "Afficher la feuille d'action" pour State: UIControlStateNormal]; [button setTitleColor: [UIColor blackColor] pourState: UIControlStateNormal]; button.tintColor = [UIColor darkGrayColor]; [button addTarget: auto action: @selector (showActionSheet :) pour forEventuresEvent: UIControlEventTouchUpInside]; [auto.view addSubview: bouton];

En faisant la méthode précédente, showActionSheet:, cible du bouton, cette méthode sera appelée lorsque vous appuierez sur le bouton. Maintenant que nous avons un bouton pour afficher la feuille d'action, passons à la création de la logique pour afficher la feuille d'action lorsque le bouton est enfoncé.


Étape 3: Se conformer au délégué

Avant que nous puissions appeler l’un des UIActionSheetDelegate méthodes, nous devons nous conformer à la UIActionSheetDelegate protocole. Cliquez sur le fichier "ViewController.h" et mettez à jour la déclaration de l'interface avec le code suivant..

 @interface ViewController: UIViewController 

En se conformant à la UIActionSheetDelegate protocole, le ViewController classe peut implémenter et effectuer les tâches nécessaires lorsque certaines méthodes de délégation sont appelées.


Étape 4: Ajout de la méthode de délégué

Toujours dans le fichier "ViewController.m", ajoutez ce qui suit UIActionSheetDelegate méthode.

 - (void) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex 

Il y a beaucoup de UIActionSheetDelegate méthodes, cependant, nous allons utiliser un seul: actionSheet: clickedButtonAtIndex:. Il s’agit de l’une des méthodes de délégation les plus couramment implémentées car elle est appelée automatiquement lorsque l’un des boutons de la feuille d’action est exploité..


Étape 5: Affichage de la feuille d'action

Cherchez le showActionSheet: définition de la méthode que nous avons ajoutée plus tôt. Ajoutez le code suivant à l'intérieur des accolades pour créer une feuille d'action avec cinq boutons.

 NSString * actionSheetTitle = @ "Action Sheet Demo"; // Titre de la feuille d'action NSString * destructiveTitle = @ "Bouton de destruction"; // Titres des boutons de la feuille d'action NSString * other1 = @ "Autre bouton 1"; NSString * other2 = @ "Autre bouton 2"; NSString * other3 = @ "Other Button 3"; NSString * cancelTitle = @ "Bouton Annuler"; UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: délégué actionSheetTitle: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitles: other1, other2, other3, nil]; [actionSheet showInView: self.view];

Comme son nom l'indique, une fiche d'action présente à l'utilisateur des choix différents et les actions correspondantes pouvant être effectuées. Dans la première partie de la méthode, nous créons six chaînes, une qui représente le titre de la feuille d'action et cinq qui représentent les titres des boutons de la feuille d'action. La partie suivante instancie une feuille d’action avec des paramètres spécifiques. Ces paramètres incluent un titre pour la feuille d’action, l’objet qui sera le délégué (dans ce cas, soi, la UIViewController objet) et les différents boutons à afficher dans la fiche d'actions.

Il existe trois principaux types de boutons utilisés dans une feuille d’action. le cancelButtonTitle: annule complètement la fiche d'action. le destructiveButtonTitle: détruit ou supprime quelque chose; ce bouton est rouge par défaut dans la feuille d'actions. le otherButtonTitles: peut être n'importe quoi et offre souvent une option comme naviguer vers un nouveau viewController. Afin de laisser de côté un des boutons, il suffit de passer à zéro comme argument pour le titre de ce bouton. La dernière partie de la méthode, showInView:, affiche la feuille d'action dans la vue spécifiée.


Étape 6: Répondre à une pression sur un bouton

Revenir à la méthode déléguée actionSheet: clickedButtonAtIndex:. Ajoutez le code suivant pour déterminer le bouton sur lequel vous avez appuyé:

 // Récupère le nom du bouton actuellement enfoncé. NSString * buttonTitle = [actionSheet buttonTitleAtIndex: buttonIndex]; if ([buttonTitle isEqualToString: @ "Bouton de destruction"]) NSLog (@ "Destructive appuyé -> Supprimer quelque chose");  if ([buttonTitle isEqualToString: @ "Autre bouton 1"]) NSLog (@ "Autre 1 appuyé");  if ([buttonTitle isEqualToString: @ "Autre bouton 2"]) NSLog (@ "Autre 2 appuyé");  if ([buttonTitle isEqualToString: @ "Autre bouton 3"]) NSLog (@ "Autre 3 appuyé");  if ([buttonTitle isEqualToString: @ "Bouton Annuler"]) NSLog (@ "Annuler appuyé -> Annuler ActionSheet"); 

Quand on appuie sur un bouton, actionSheet: clickedButtonAtIndex: est appelé. Nous obtenons le nom du bouton sur lequel nous appuyons et le comparons aux différents titres de bouton de la feuille d'action pour déterminer le bouton sur lequel vous avez appuyé. le NSLog avec chaque déclaration si se connecter quel bouton a été appuyé sur la console.


Étape 7: Test de la fiche d'action

Cliquez sur Produit> Run pour construire et exécuter le projet dans le simulateur. Cliquez sur "Afficher la feuille d'action" pour afficher la feuille d'action. Ouvrez la console en cliquant sur Affichage> Zone de débogage> Activer la console dans Xcode. Cliquez sur l'un des boutons de la feuille d'actions pour afficher le journal correspondant dans la console..


Conclusion

UIActionSheet est couramment utilisé pour offrir à l'utilisateur de nombreuses options. Expérimenter avec UIActionSheet vous permettra de trouver la configuration qui convient aux besoins de votre application. Questions ou commentaires? N'hésitez pas à les laisser dans la section commentaires ou à les envoyer directement via Twitter @aaron_crabtree.