2010-01-22 4 views
0

J'ai réussi à obtenir mon application pour compter le nombre d'actions sur un bouton IBAction, puis effectuer une autre tâche une fois que le nombre de clics est supérieur à 10.iPhone COUNT par incréments allant de 3

Malheureusement, le nombre semble augmenter de 3 à la fois, au lieu de 1.

Des idées que j'ai mal fait ici?

- (IBAction) do_button_press:(id)sender { 
    static int count = 0; 
    count++; 
    label.text = [NSString stringWithFormat:@"%d\n", count]; 

    if (count++ > 10) { 
     label.text = @"done"; 
    } 
} 
+1

Vous devriez ajouter un NSLog() et voir ce qui se passe ... êtes-vous appelé plusieurs fois? –

+0

la partie 'int compte = 0;' à l'intérieur de la méthode, le fera toujours 1? –

+2

Non, c'est une initialisation d'une variable locale statique. Cela n'arrive qu'une fois. –

Répondre

3

Ne devrait pas votre look déclaration if comme:

if (count > 10) 

plutôt que:

if (count++ > 10) 

?

En utilisant votre code d'origine, la première fois count est utilisé, sa valeur est 1, puis incrémentée à 2 (par le count++ dans la déclaration if), puis incrémentée à 3 (par la count++ en ligne 3)

+0

bingo! Merci mec! :) –

+0

Cela fait certainement partie du problème. –

0

Je peux voir deux "count ++" dans votre méthode, donc vous comptez incrémenter au moins deux fois.

 
- (IBAction) do_button_press:(id)sender { 
    static int count = 0; 
    label.text = [NSString stringWithFormat:@"%d\n", count]; 
    if (count++ > 10) { 
     label.text = @"done"; 
    } 
} 

Il suffit de retirer le premier chef d'accusation ++.

+0

merci pour la réponse, a tout trié. juste une nuit tard je pense! –