m nouveauté de l'objectif-c, j'ai fait une demande de page de connexion dans laquelle j'ai utilisé UISwitch pour me rappeler d les détails de connexion si le commutateur est en mode activé. Je l'ai fait avec pour se rappeler les détails de connexion, mais le problème est que comment utiliser l'état marche/arrêt. Thanx à l'avanceUiswitch on/off
Répondre
Vous ajouteriez une instruction conditionnelle quelque part dans votre code en fonction de la propriété on
du commutateur. Disons, par exemple, que vous vous souvenez des détails de connexion dans une méthode appelée rememberLoginDetails
. Qu'est-ce que vous feriez est, quand une action est déclenchée (l'utilisateur quitte la page de connexion, par exemple):
if([yourSwitch isOn]) {
[self rememberLoginDetails];
} else {
// Do nothing - switch is not on.
}
La méthode importante est la méthode isOn
ici pour UISwitch yourSwitch
. isOn
est le getter pour la propriété on
du commutateur, qui est une propriété BOOL
contenant YES
si le commutateur est activé et NO
si ce n'est pas le cas. Pour plus d'informations, vous pouvez voir le UISwitch class reference, plus précisément le part about isOn
.
Je crois que le code doit être le suivant:
if([yourSwitch isOn] == YES) {
[self rememberLoginDetails];
} else {
// Do nothing - switch is not on.
}
Non, ce n'est pas le cas. Si la valeur du retour est un BOOL, alors vous n'avez pas besoin d'utiliser un opérateur de comparaison, car le "si" fonctionne sur un BOOL (si (VRAI) faire des choses, sinon faire d'autres choses;). Donc, tant que [votreSwitch isOn] renvoie YES (ou NO), le "si" sera correctement parcouru. Ce code doit en réalité faire plus d'appels, ce qui le rend plus lent (seulement de quelques millisecs, mais quand même). – ColdLogic
C'est une autre solution pour cette question.
if (switchValue.on == YES)
{
// Code...
}
else
{
// Other code...
}
La solution la plus facile :) tous
if (switchValue.on){
//Remember Login Details
}
else{
//Code something else
}
Comment puis-je ajouter une valeur au commutateur? –
j'ai eu le même problème, j'avais le nom du UISwitch = Sélectionné
je l'ai changé à un autre nom et cela a fonctionné.
Si vous voulez vous rappeler les détails de connexion juste au moment où l'utilisateur METTEZ le commutateur, vous pouvez le faire en créant une action.
- (IBAction)yourSwitch:(id)sender {
if([sender isOn]){
//do your stuff here
}else{
}
}
Ceci est une autre solution, si votre UISwitch est dans un tableView
1 ajouter ce code dans "tableView: cellForRowAtIndexPath:" méthode
[switchControl addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
2 ajouter cette méthode
- (void) switchChanged:(id)sender {
UISwitch *switchControl = sender;
NSLog(@"The switch is %@", switchControl.on ? @"ON" : @"OFF");
}
- 1. UISwitch méthode d'action
- 2. Comment ajouter un UIButton ou UISwitch dans tableView: viewForFooterInSection
- 3. Erreur de compilation: Valeur invalide dans l'affectation lorsque vous tentez de changer l'origine d'un UISwitch
- 4. Impossible de définir UISwitch en dehors de la classe de contrôleur
- 5. WPF Débogage des Datatriggers?
- 6. quoi appeler viewDidLoad ou loadview
- 7. Modifier l'étiquette d'UISwitch
- 8. dynamique, NSString localisé
- 9. Problème avec plusieurs vues modales
- 10. Test du câblage de la cible-action
- 11. Activer/Désactiver le commutateur dans la cellule (bug 2.2.1 à 3.0)
- 12. Quel est le problème avec mon dessin Checkbox?
Bonjour, j'ai utilisé votre code ... mais le problème reste le même. il se souvient d des détails en état de marche aussi. –
Dans ce cas, il vous serait utile de modifier votre question initiale pour inclure le code que vous utilisez. – Tim
@Harita: J'ai eu le même problème .. J'ai essayé d'utiliser a == TRUE après et cela n'a toujours pas fonctionné. Puis je suis entré dans l'interface de construction, connecté le commutateur à mon IBOutlet var, et cela a fonctionné:] – abelito