Je pensais à ce sujet et ai lu un autre stackoverflow question concernant la meilleure façon recommandée de communiquer entre les contrôleurs de vue. Cependant, la question/réponse pour cela ne semble pas aborder la meilleure approche pour le comportement inverse.Quelle est la meilleure façon d'inverser la communication entre les contrôleurs de vue?
dire pour transmettre des données de ParentController
à son ModalController
, nous pourrions initialiser ModalController
comme initWithDataToProcess:
. Mais si nous voulons faire le inverser? Comment avertirais-je le contrôleur précédent d'une nouvelle donnée?
par exemple. L'utilisateur clique sur le bouton 'nouvelle personne' sur le ParentController
. J'initie un nouveau ModalController
et présente l'utilisateur avec une vue d'éditeur de personne via presentModalViewController:
. L'utilisateur clique sur 'fait' pour ajouter une nouvelle personne. I dismissModalViewController:
et l'interface utilisateur revient à la vue ParentController
. L'utilisation d'une référence de champ globale dans un objet singleton (délégué d'application ou autre) est mauvaise.
délégation (via le protocole formel) et notifications (via NSNotificationCenter) semble exagéré. Aucune suggestion?
En .NET, ce n'est pas un problème car un appel modal ('ShowDialog()') est un appel bloquant. Cela ne semble pas être le cas avec Objective-c/Cocoa avec 'presentModalViewController:' – JeffreySadeli