Question

un de mes contrôleurs de vue a plusieurs UISwitches, et je veux un autre contrôleur afin de pouvoir accéder aux valeurs des UISwitches pour If / et déclarations. Comment puis-je faire en Objective-c?

Était-ce utile?

La solution

Vous ne voulez probablement pas faire cela. Si vous voulez une deuxième ViewController d'avoir un comportement différent en fonction des commutateurs jetés dans le premier, vous devez simplement lier les commutateurs aux valeurs par défaut de l'utilisateur, que vous pouvez lire partout dans votre application.

http: // icodeblog. com / 2008/10/03 / iphone-programmation-tutorial-savingretrieving-données à l'aide-NSUserDefaults /

Autres conseils

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 continuer à 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 contrôleur de vue seulement l'accès à la propriété on de UISwitch correspondant.

Cependant, au lieu d'aller dans cette voie, je suggère fortement que vous créez une classe personnalisée pour maintenir l'état booléen de chaque UISwitch. Une instance de cette classe pourrait être soit un singleton, ou contenu dans le délégué de l'application. Voir cette répondre comment faire avec les deux approches.

Une classe personnalisée est mieux parce qu'un UISwitch est juste une façon de représenter une propriété dans votre modèle de données. Et si demain vous avez remplacé le UISwitch avec une autre fantaisie le contrôle, le second contrôleur de vue devrait encore continuer à travailler. Les deux contrôleurs de vue ont une référence à un objet de cette classe personnalisée. Chaque fois qu'il ya un changement, 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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top