Comment envoyer des informations entre deux vues (et donc deux classes)? Est-ce que je cherche mon délégué d'application? Y a-t-il un moyen meilleur ou alternatif?Concept de base: communiquer entre deux vues?
Répondre
J'utiliserais le délégué d'application. Ou, si une vue possède l'autre, vous pouvez les initialiser ensemble et conserver la référence principale dans la classe.
Je trouve toujours utile d'avoir un objet Context global pour conserver les informations globales parmi les vues. Ces informations peuvent être des informations de configuration, l'orientation actuelle du périphérique, des gestionnaires de base de données, etc.
Pour les variables dont vous avez besoin d'un accès croisé, vous pouvez utiliser Propriétés.
class VC1 : UIViewController {
NSString* v1;
NSString* v2;
}
@property (copy) NSString *v1;
@property (copy) NSString *v2;
Et puis, dans l'autre vue:
class VC2 : UIViewController {
VC1 *vc1;
}
Et vous implémentations de messages dans VC2 vous pouvez utiliser v1 et v2 VC1 comme ceci:
- (void) someMessage {
NSLog(@"VC1's v1 value is %@ and v2 value is %@", [vc1 v1], [vc1 v2]);
}
Hope it helps.
Si vous souhaitez renvoyer des informations, vous pouvez utiliser target-action (comme le fait UIControl), ou vous pouvez envoyer NSNotifications ou utiliser un protocole de délégué générique. À moins que ce ne soit une information d'utilisation dans votre application, la mettre dans votre application peut être exagérée.
Je dirais que bien que ce soit un moyen rapide et sale de transmettre des données entre les vues, ce n'est pas une bonne pratique. Il associe les contrôleurs de vue et rend l'application difficile à maintenir et à mettre à l'échelle. – TechZen
Très explicitement, il ne couple rien ensemble. Où est le couplage? –
+1 pour NSNotifications et délégués – Anurag
- 1. Communiquer entre deux threads
- 2. Comment communiquer entre deux applications?
- 3. Partager l'image entre deux vues
- 4. Comment communiquer entre deux fenêtres de navigateur?
- 5. Comment communiquer entre deux NativeWindows dans Air
- 6. Comment communiquer entre deux modules dans GWT
- 7. Communiquer entre deux webviews avec Javascript
- 8. ne semblent pas pouvoir communiquer entre les vues
- 9. Comment communiquer entre les vues dans Eclipse RCP?
- 10. envoi de chaînes entre deux vues?
- 11. basculer entre les vues des deux XIB
- 12. Est-ce que deux applications iPhone peuvent communiquer entre elles?
- 13. Communiquer entre UITableView et UITableViewCell?
- 14. Comment communiquer entre des objets
- 15. Communication entre les vues
- 16. Comment communiquer entre les contrôles personnalisés ASP.net
- 17. Android: Comment communiquer entre 2 activités
- 18. ListView avec deux vues
- 19. Comment communiquer entre deux instances de MDB ouvertes avec le même formulaire?
- 20. communiquer entre l'extension Firefox et l'application .NET
- 21. Concept d'archivage d'une énorme base de données
- 22. NormalizAtion concept dans la base de données
- 23. quelle est la différence entre ces deux vues? (Autorotation)
- 24. Comment communiquer entre projets C# et Wpf?
- 25. deux vues de problème d'orientation
- 26. Communiquer entre des programmes MPI distincts
- 27. Objectif C: Communiquer entre les classes
- 28. C# Comment communiquer entre 2 serveurs
- 29. Comment communiquer entre threads en JavaScript?
- 30. comment communiquer entre application Windows et Silverlight?
Où sont mes variables et comment une vue est-elle connue des variables de l'autre? – Moshe
Mis à jour ma réponse avec du code. J'espère que cela aide. –
Cela semble bon, mais comment puis-je obtenir la valeur de VC1 dans VC2? Chaque contrôleur de vue verra-t-il l'autre via le délégué maintenant? – Moshe