J'ai une vue de vue A avec un Uilabel code> et un mode de vue B avec une touche code> code>, donc je souhaite mettre à jour l'étiquette une fois que j'appuie sur le bouton. Je pourrais utiliser des délégués pour cela, mais mes conclusions de vue ne sont pas connectées et je ne peux pas utiliser quelque chose comme SetDelegate, je ne crée aucune instance d'une dans une autre. Donc, fondamentalement, ils sont créés ailleurs. Y a-t-il un moyen de le faire? P>
3 Réponses :
Utiliser Utiliser nsuserdefault code>. Sur le bouton Controllerb, cliquez sur Stocker les données dans NSUseraFault, dans Controllera Lire les données de NsUserDefault et Show in Cadel (Nsuserdefault est également observable, afin de suivre les modifications de l'heure d'exécution) p>
nsnotificationCenter code>. Sur le bouton Controllerb, cliquez sur Publier une NSnotification avec des données à UserInfo et la contrôleur dans le gestionnaire de notification extrait des données de UserInfo et d'attribuer à l'étiquette. P>
Utiliser le modèle de coordinateur. P>
classe qui créera / obtenir les 2 instances des deux VCS, Et avec des délégués déplacera les données entre eux. L'avantage du modèle de coordinateur est que votre VCS peut être réutilisé sur d'autres endroits (même ou autre projet), ainsi que le code est plus propre. P>
Pour développer la réponse de APSERI:
Méthode de notification de modification du contrôleur d'affichage: Dans le contrôleur d'affichage avec le bouton sur le bouton Appuyez sur Call: P>
self.label.text=[[NSUserDefaults standardUserDefaults] stringForKey:@"myuniquekeyname"];
Lorsque vous dites "non connecté", vous pouvez peut-être clarifier. Sont-ils dans la même manière de la hiérarchie du contrôleur, mais tout simplement ne correspond pas immédiat? Ou parlez-vous de certains échanges radicaux du contrôleur de vue root de la fenêtre? La façon dont vous avez formulé la question, vous allez presque certainement obtenir des réponses sur les globaux, les singletons, etc. mais une injection de dépendance est souvent préférée. Mais nous avons besoin d'un peu plus de contexte pour vous conseiller.