Vidéo: 068 — «PopOver» dans un contrôleur de vue 2025
Si votre application iPad a une vue Modal, vous devez ajouter méthodes à SettingsViewController. m (implémentation) fichier. Ces méthodes gèrent la vue modale de l'application iPad et effectuent toutes les actions d'entrée de l'utilisateur.
Il est utile de savoir ce que fait chaque section du code fourni par les gabarits, et il est particulièrement utile d'utiliser les # balises pragma mark pour marquer chaque section afin de pouvoir accéder rapidement à la section correspondante en cas de besoin. L'exemple de code suivant, qui fait partie d'une application appelée Deep Thoughts, inclut ces instructions.
#import "SettingsViewController.h" #import "DeepThoughtsViewController.h" #import "Constantes.h" @implementation SettingsViewController @synthesize délégué, wordsOfWisdom, curseur; #pragma mark - #pragma mark Afficher le cycle de vie / * // L'initialiseur désigné. Remplacer si vous créez le contrôleur par programme et souhaitez effectuer une personnalisation qui n'est pas appropriée pour viewDidLoad. - (id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {if ((self = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil])) {// Initialisation personnalisée} return self;} * / / * / / Implémenter viewDidLoad pour effectuer une configuration supplémentaire après le chargement de la vue, généralement à partir d'une plume. - (void) viewDidLoad {[super viewDidLoad];} * / - (void) viewDidLoad {[super viewDidLoad]; soi. vue. backgroundColor = [UIColor clearColor]; curseur valeur = + kMaxSpeed - ((DeepThoughtsViewController *) (self.parisViewController)). speed;} #pragma mark - # marquepragma textField - (BOOL) textFieldShouldBeginEditing: (UITextField *) textField {[textField setReturnKeyType: UIReturnKeyNext]; return YES;} - (BOOL) textFieldShouldReturn: (UITextField *) textField {[textField resignFirstResponder]; return YES;} - (void) textFieldDidEndEditing: (UITextField *) textField {wordsOfWisdom = textField. text;} #pragma mark - #pragma mark Contrôles - (IBAction) speedChanged: (id) expéditeur {[delegate changeSpeed: [(UISlider *) valeur de l'expéditeur]];} - (IBAction) done {if (! [theTextField. isEqualToString: @ "]) wordsOfWisdom = theTextField. text; [auto.demission settingsViewControllerDidFinish: self];} #pragma mark - #pragma mark Orientation - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {// Overriden pour autoriser toute orientation. YES;} #pragma mark - #pragma mark Gestion de la mémoire - (void) didReceiveMemoryWarning {// Libère la vue si elle n'a pas de vue d'ensemble. [Super didReceiveMemoryWarning]; // Libère toutes les données en cache, les images, etc. t en cours d'utilisation.} - (void) viewDidUnload {[super viewDidUnload]; // Libère toutes les sous-vues conservées de la vue principale. // e. g. soi. myOutlet = nil;} - (void) dealloc {[super dealloc];} @end
Ok, voici ce que fait le code précédent:
-
Bien que la déclaration @property dans le fichier d'en-tête indique au compilateur qu'il existe des méthodes accesseur, vous avez besoin d'une instruction @synthesize pour qu'une propriété crée ces méthodes. L'instruction @synthesize indique au compilateur de créer des méthodes d'accesseur pour vous - une pour chaque déclaration @property.
-
La méthode viewDidLoad définit l'arrière-plan et la vitesse du curseur (qui contrôle la vitesse des mots défilant sur l'écran de l'iPad).
-
Le protocole UITextFieldDelegate définit les messages envoyés à un délégué de champ de texte dans le cadre de la séquence d'édition de son texte. Lorsque l'utilisateur exécute une action qui devrait normalement démarrer une session d'édition, le champ de texte appelle la méthode textFieldShouldBeginEditing: d'abord pour voir si l'édition doit effectivement se poursuivre. Dans la plupart des cas, vous devez simplement renvoyer YES à partir de cette méthode pour permettre la modification.
-
Le champ de texte appelle la méthode textFieldShouldReturn: chaque fois que l'utilisateur tape sur le bouton Retour du clavier pour savoir s'il doit traiter le retour. Vous pouvez utiliser cette méthode pour implémenter tout comportement personnalisé lorsque le bouton de retour est appuyé, mais pour vos besoins, vous renvoyez simplement YES (qui est la valeur par défaut), bien que vous puissiez renvoyer NO pour ignorer le bouton Retour.
-
Après avoir dit "oui" à ceci ou cela, l'action réelle se produit avec la méthode textFieldDidEndEditing: qui est appelée après que le champ de texte a quitté son statut de premier répondeur pour dire au délégué que l'édition s'est arrêtée pour le champ de texte spécifié. que vous avez maintenant le editOuWisdom (qui sont les mots qui défilent sur l'écran de l'iPad dans cette application).
-
Ensuite, vous fournissez une méthode speedChanged (de type IBAction) pour gérer une modification de vitesse, qui utilise la méthode changeSpeed du délégué pour modifier immédiatement la vitesse de l'animation dans la vue lorsque l'utilisateur la modifie dans la vue modale.
-
Vous fournissez également une méthode done qui gère la possibilité d'un champ de texte vide. Le code attribue le texte du champ de texte à wordsOfWisdom uniquement si le champ est et non theTextField. le texte estEqualToString: @ ".
