Frage

Ich habe ein int, die die objectAtIndex definiert, die es auf die Zeichenfolge gibt, die dann zeigt sie in der UILabel jedoch, wenn ich das Array ändern (ein Wort, um es in diesem Fall hinzufügen), wenn ich die UILabel haben gehen durch das Array zeigt es nur die ungeraden. Ich habe ein NSLog und fand heraus getan, dass es jede einzelne Sache auf den String nicht passiert, aber das Label ist nicht jeden einzelne Anzeige, es nur, dass es das erste Mal, dann ändere ich das Array, und es tut nur ungerade

edit: der 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"];
    }
}

All dies wird durch eine NSTimer gesteuert wird, die es aus setzt basierend auf einem Schieber Wert. Auch i auf 0 gesetzt ist in der IBAction

Der IBAction Code:

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:

Ich reparierte es! Was ich tat, war dies zu nennen, nachdem ich die Zählung erreicht

 -(void)stoptimer
{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:(.01) target:self selector:@selector(empty) userInfo:nil repeats:YES];  
}

leer ist nur eine Leere mit nichts drin, na ja, alles, was ich tat, war, einen Kommentar hinzuzufügen,

//don't look over here, nothing to see here, oh look at that

Jemand kann diese schließen, wenn sie wollen,

War es hilfreich?

Lösung

Sie haben gesagt, das Zeitintervall Ihres NSTimer durch einen Schieber gesteuert wird. Vielleicht beginnen Sie eine neue Timer-Instanz jedes Mal, wenn Sie den Regler Wert zu ändern, so dass nach einer Änderung müßten Sie zwei Timer läuft. Die erste aktualisiert die Beschriftung und Schritte i. Die zweite kommt gleich nach dem ersten und findet i den Wert erhöht, so zeigt es die nächsten Brocken anstelle des aktuellen.

Zählen Sie die Instanzen der Timer - NSLog den Timer im Timer-Rückruf und die Ergebnisse vergleichen -. Es kann sein, dass Sie mehr als eine sind Brennen

Andere Tipps

Meine Vermutung ist, dass Sie zwei verschiedene Aktionen haben diese Methode aufrufen, wenn Sie denken, es sollte eine sein. Ich würde dort einen Haltepunkt setzen, und sehen, ob es aufhört, wo Sie denken, es sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top