UILabel affichant uniquement les objets impairs dans NSArray
Question
J'ai un int qui définit l'objet objectAtIndex, qui le donne à la chaîne, qui l'affiche ensuite dans UILabel, CEPENDANT, lorsque je modifie le tableau (j'ajoute un mot dans ce cas) lorsque j'ai le UILabel à travers le tableau, il affiche uniquement les impairs. J'ai fait un NSLog et j'ai découvert qu'il passait chaque chose à la chaîne, mais le label n'affichait pas tout le monde, il le faisait seulement la première fois, alors je modifiais le tableau, et il n'était étrange que
modifier: le code:
- (void) stuff {
NSArray *indivwords = [sentence componentsSeparatedByString:@" "];
count = [indivwords count]; //count=int
if (i < count) {
NSString *chunk = [indivwords objectAtIndex:i];
[word setText:chunk];
NSLog(chunk);
i++;
} else {
word.textColor = [UIColor greenColor];
[word setText:@"DONE"];
}
}
Tout cela est contrôlé par un NSTimer, ce qui le différencie en fonction d'une valeur de curseur. Aussi, je suis mis à 0 dans le IBAction
Le code IBAction:
word.textColor = [UIColor whiteColor];
[timer invalidate];
i = 0;
speedd = (1/speed.value)*60;
timer = [NSTimer scheduledTimerWithTimeInterval:(speedd) target:self selector:@selector(stuff) userInfo:nil repeats:YES];
EDIT:
Je l'ai réparé! Ce que j’ai fait, c’est d’appeler cette personne une fois que j’ai atteint le compte
-(void)stoptimer
{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:(.01) target:self selector:@selector(empty) userInfo:nil repeats:YES];
}
vide est juste un vide avec rien dedans, bien, tout ce que j'ai fait était d'ajouter un commentaire,
//don't look over here, nothing to see here, oh look at that
Quelqu'un peut le fermer s'il le souhaite
La solution
Vous avez dit que l'intervalle de temps de votre NSTimer est contrôlé par un curseur. Peut-être démarrez-vous une nouvelle instance de minuterie chaque fois que vous modifiez la valeur du curseur. Ainsi, après une modification, deux compteurs seraient en cours d'exécution. Le premier met à jour l'étiquette et incrémente i
. Le second vient juste après le premier et trouve la valeur de i
incrémentée. Il affiche donc le bloc suivant au lieu de celui en cours.
Comptez le nombre d'instances de votre minuteur - NSLogez le minuteur dans le rappel du minuteur et comparez les résultats - il se peut que vous en tiriez plus d'un.
Autres conseils
Je suppose que vous avez deux actions différentes appelant cette méthode, alors que vous pensez qu'il devrait y en avoir une. Je mettrais un point d'arrêt là-dedans et verrais si cela s'arrête là où vous pensez qu'il le devrait.