2010-09-15 16 views
4

Voici la méthode IBAction liée à la UISwitch avec l'événement valueChanged:UISwitch ne pas retourner son état actuel (on/off)

- (IBAction) sanitySwitch { 
if (checkoption.on == YES) { 
    NSLog(@"SanityCheck ENABLED"); 
    sanityCheck = YES; 
} else { 
    NSLog(@"SanityCheck DISABLED"); 
    sanityCheck = NO; 
} 
} 

Il retourne toujours "SanityCheck HANDICAPÉS". L'option de contrôle UISwitch est correctement liée à son objet à partir du fichier XIB et les paramètres @propery et @syntetize appropriés ont été placés.

Répondre

14

Remplacez le code par ce code. et se reconnecter avec le commutateur comme événement de contrôle de changement de valeur.

- (IBAction) sanitySwitch:(id)sender { 
    if ([sender isOn]) { 
     NSLog(@"SanityCheck ENABLED"); 
     sanityCheck = YES; 
    } 
    else { 
     NSLog(@"SanityCheck DISABLED"); 
     sanityCheck = NO; 
    } 
} 
+0

Pour baliser code indent par 4 espaces ou sélectionnez le code et appuyez sur le bouton '010' - pas besoin de tag html etc. –

+0

+1 et merci beaucoup ... :) – Sarah

+1

J'ai eu un problème totalement étrange où vous avez POUR UTILISER "expéditeur", plutôt que self.yourSwitch, pour que "isOn" (ou .on) fonctionne. Qui sait? – Fattie

-1

Vous utilisez la propriété « sur » mauvaise façon Vous devez vérifier comme suit:

if ([checkoption isOn]) 

Voir the documentation correctement.

+0

J'ai essayé d'utiliser if ([checkoption isOn]), la méthode renvoie toujours "SanityCheck DISABLED". – Kami

+0

Satyam, 'getter = foo' ne s'applique qu'aux appels explicites comme' [switch isOn] ', pas à la syntaxe point. –