2009-07-08 6 views
7

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

7

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.

+0

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. –

+0

Dans ce cas, il vous serait utile de modifier votre question initiale pour inclure le code que vous utilisez. – Tim

+0

@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

0

Je crois que le code doit être le suivant:

if([yourSwitch isOn] == YES) { 
    [self rememberLoginDetails]; 
} else { 
    // Do nothing - switch is not on. 
} 
+1

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

-1

C'est une autre solution pour cette question.

if (switchValue.on == YES) 
{ 
    // Code... 
} 
else 
{ 
    // Other code... 
} 
17

La solution la plus facile :) tous

if (switchValue.on){ 
    //Remember Login Details 
} 
else{ 
    //Code something else 
} 
+0

Comment puis-je ajouter une valeur au commutateur? –

-1

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é.

3

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{ 
    } 
} 
0

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"); 
}