1

L'un de mes contrôleurs de vue possède plusieurs commutateurs UIS et je souhaite qu'un autre contrôleur de vue puisse accéder aux valeurs des commutateurs UIS pour les instructions If/et. Comment est-ce que je fais ceci dans Objective-c?Communication entre les vues Contrôleurs

Répondre

1

Ceci est une mauvaise idée car elle créerait une dépendance non nécessaire entre les contrôleurs de vue.

Si vous voulez toujours le faire, il suffit de passer une référence du premier contrôleur de vue avec les commutateurs au deuxième contrôleur de vue. Ensuite, dans votre deuxième vue, le contrôleur accède simplement à la propriété on de l'UISwitch correspondant. Cependant, au lieu de suivre cette route, je suggère fortement de créer une classe personnalisée pour conserver l'état booléen de chaque UISwitch. Une instance de cette classe peut être un singleton ou contenue dans le délégué d'application. Voir ce answer pour savoir comment le faire avec les deux approches.

Une classe personnalisée est préférable car un UISwitch est juste un moyen de représenter certaines propriétés dans votre modèle de données. Et si demain vous remplaciez l'UISwitch par un autre contrôle fantaisie , le second contrôleur de vue devrait continuer à fonctionner. Les deux contrôleurs de vue ont une référence à un objet de cette classe personnalisée. Chaque fois qu'il y a une modification, le premier contrôleur met à jour cet objet.

L'interface de classe pourrait être quelque chose comme ceci:

@interface DataValues : NSObject { 
    BOOL first; 
    BOOL second; 
    BOOL third; 
} 

@property BOOL first; 
@property BOOL second; 
@property BOOL third; 
+0

si je finalement utilisé la suggestion de cdespinosa, il faut noter que votre solution a bien fonctionné aussi bien. –

Questions connexes