Vidéo: Comment Créer une Modal Popup - Swift & Xcode Tuto (FR) 2025
La plupart du temps, l'utilisateur peut contrôler ce qui se passe dans les applications iOS. Vous fournissez les boutons et autres éléments d'interface, mais l'utilisateur choisit quoi faire et quels éléments d'interface utiliser. Les vues modales interrompent ce contrôle utilisateur. Ils sont présentés à l'écran et, bien que l'utilisateur puisse les toucher, ils restent à l'avant et au centre jusqu'à ce que l'utilisateur les rejette.
Ils sont utilisés lorsque vous voulez que l'utilisateur fasse quelque chose ou résolve un problème avant de continuer à utiliser le reste de l'application. L'appareil n'est pas verrouillé car l'utilisateur peut utiliser le bouton Accueil pour passer à une autre application, mais pour ce qui est de votre application, il est gelé jusqu'à ce que la vue modale soit fermée.
La façon la plus courante de gérer les vues modales est de créer un protocole Objective-C adopté par le contrôleur présentant la vue modale. La vue modale, lorsque l'utilisateur a sélectionné une action ou Annuler, envoie un message à la méthode déléguée du contrôleur présentateur. Le contrôleur demandeur rejette alors le contrôleur Modal.
L'utilisation de cette approche signifie que, avant de rejeter le contrôleur Modal, le contrôleur présentateur peut obtenir toutes les données dont il a besoin. C'est le modèle que vous allez implémenter ici.
Vous commencez à implémenter la vue modale en déclarant le protocole et quelques autres propriétés dont vous aurez besoin, ainsi que les protocoles que le contrôleur de destination doit adopter.
Pour commencer, ajoutez le code en gras dans l'extrait 20-1 à DestinationController. h.
#import @protocol DestinationControllerDelegate ; @interface DestinationController: UIViewController @property (faible, non atomique) IBOutlet UITableView * destinationTableView; @property (fort, nonatomic) id délégué; @property (non atomique, en lecture seule) NSUInteger selectedDestination; - (IBAction) cancel: (id) expéditeur; -d @protocol DestinationControllerDelegate @required - (void) destinataireController: (DestinationController *) contrôleur didFinishWithSave: (BOOL) save; -d
Le langage Objective-C permet de déclarer formellement une liste de méthodes (y compris les propriétés déclarées) en tant que protocole. Vous avez largement utilisé les protocoles fournis par le framework dans ce livre, et vous définissez maintenant votre propre protocole.
Vous déclarez des protocoles formels avec la directive @protocol. Vous avez déclaré un protocole DestinationControllerDelegate avec une méthode, destinationController: didFinishWithSave:, qui est obligatoire. Obligatoire est la valeur par défaut Si vous souhaitez déclarer des méthodes facultatives, vous devez utiliser le mot-clé @optional, et toutes les méthodes qui suivent ce mot-clé sont facultatives.Par exemple, considérons ceci:
@protocol SimpleDelegate @optional - (void) doNothing; -d
Vous pouvez avoir à la fois des méthodes @required et @optional dans un protocole. Il est courant de les regrouper, mais vous pouvez les intercaler si vous le souhaitez.
Si @required ou @optional n'est pas spécifié, @required est supposé. Cependant, il est préférable d'être précis sur ce qui est requis et ce qui est facultatif. L'instruction @ControllerDelegate: @protocol (en haut) indique au compilateur qu'un protocole est en route. Comme la déclaration @class, il est dit: «Faites-moi confiance, vous trouverez le protocole. "Vous avez besoin de ceci ici seulement parce que vous avez ajouté ceci:
délégué @property (fort, nonatomic) id;
Cette instruction indique au compilateur de taper check ce que vous avez assigné à delegate pour vous assurer qu'il implémente le protocole DestinationControllerDelegate.
Vous avez également ajouté la propriété selectedDestination, que vous utiliserez dans ViewController pour déterminer la destination sélectionnée par l'utilisateur. Notez que vous l'avez fait en lecture seule, car il n'y a aucune raison pour qu'un autre objet puisse le définir.
Vous avez également adopté deux protocoles du framework Cocoa Touch, UITableViewDelegate et UITableViewDataSource, que vous utiliserez pour gérer la vue Table.
Ensuite, vous devrez mettre à jour l'implémentation de DestinationController avec le code en gras pour certains fichiers d'en-tête que vous devrez utiliser plus tard.
#import "DestinationController.h" #import "DetailViewController.h" #import "AppDelegate.h" @interface DestinationController () -d @implementation Cible de destination
Maintenant que vous avez la plomberie dans, vous pouvez regarder ce qui se passera dans le DestinationController.