5 votes

Comment renvoyer des données à la vue parente lors de l'utilisation de UINavigationController et du bouton Retour par défaut ?

Contexte - Donc, en termes d'approche à un niveau élevé, il me semble qu'il y a :

  1. Enregistrer/persister les réglages au fur et à mesure que vous progressez à travers une chaîne de niveaux de UINavigationController - donc lorsque vous commencez initialement à modifier les paramètres ou à les créer, il devrait y avoir un ensemble de valeurs par défaut - c'est-à-dire qu'à tout moment si l'application se ferme, les paramètres seraient valides
  2. Enregistrer les modifications au fur et à mesure et une fois que vous revenez de l'arborescence d'écrans de UINavigationController (avec tous les paramètres définis), il y aura un moment où vous pouvez enregistrer

Cette question se concentre sur l'Option 2 que j'essayais d'implémenter.

Le Plan - Alors que dans un type de UINavigationController de paramètres, j'allais transmettre les détails existants (ou par défaut) pour une section des paramètres de la vue parent à la vue enfant lorsque la vue enfant est ajoutée à la pile. Le problème est lorsque ces données sont mises à jour, ET en supposant que je veuille rester avec le Bouton Retour par défaut, il ne semble pas y avoir de moyen d'intercepter le Bouton Retour par défaut, de sorte que lorsque je suis prêt à retirer l'enfant de la pile juste avant cela, j'appellerai un délégué qui transmettra les derniers paramètres à la vue parentale.

QUESTION - Comment transmettre les données mises à jour d'un contrôleur enfant au contrôleur parent lors de l'utilisation d'un UINavigationController et en voulant rester avec le Bouton Retour par défaut (avec la flèche vers la gauche dessus).

C'est-à-dire, probablement je n'ai pas compris comment transmettre les données en arrière je suppose (je vais utiliser un délégué), mais plutôt comment accrocher une méthode de rappel au bon moment dans le contrôleur enfant afin d'utiliser ensuite la méthode du délégué pour transmettre les données en arrière.

3voto

Xiao Points 495

Utiliser Delegate pourrait être la solution pour vous.

Le tutoriel peut être trouvé :

http://timneill.net/2010/11/modal-view-controller-example-part-2/

qui est très utile pour moi.

Éditer :

  1. Il semble que vous deviez créer un bouton de retour vous-même, info :

UINavigationController "back button" custom text?

puis ajouter la méthode :

[self.navigationController popViewControllerAnimated:YES]; 

pour revenir à la vue précédente. Vous pouvez ensuite ajouter votre propre code à ce bouton de retour.

  1. Une solution encore plus simple : implémenter la méthode 'viewWillDisapper'.

Cette méthode est appelée à chaque fois que le bouton de retour est pressé. Mais faites attention s'il va vers une autre vue au lieu de revenir en arrière.

2voto

drewag Points 12938

Vous voudriez peut-être envisager d'utiliser un objet distinct en tant que SettingsController. Vous pourriez le définir en tant que délégué des vues ou simplement appeler des fonctions dessus directement (probablement en utilisant un modèle de conception singleton). Le contrôleur des paramètres pourrait enregistrer les données mises en cache, et lorsque l'assistant est terminé (la dernière page est désallouée ou quelque chose de similaire), vous pourriez avoir le contrôleur des paramètres enregistrer les données de manière permanente.

Une autre option serait d'ajouter un bouton de sauvegarde ou de fin qui déclencherait la sauvegarde, sinon le bouton de retour servirait de bouton d'annulation. Du point de vue de l'interface utilisateur, si vous n'avez pas de bouton "sauvegarder", l'utilisateur supposerait probablement que les paramètres sont modifiés instantanément.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X