Pregunta

Tengo un int que define el objectAtIndex, que lo asigna a la cadena, que luego lo muestra en la UILabel, SIN EMBARGO, cuando modifico la matriz (agregue una palabra en este caso) cuando tengo la UILabel activa a través de la matriz solo muestra los impares. Hice un NSLog y descubrí que PASA CADA COSA ÚNICA a la cadena, pero la Etiqueta no se muestra a cada una, solo lo hace la primera vez, luego modifico la matriz y solo hace una impar. / p>

editar: el código:

- (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"];
    }
}

Todo esto está siendo controlado por un NSTimer, que lo establece en función de un valor deslizante. También i se establece en 0 en la IBAction

El código 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];   

EDITAR:

Lo arreglé! Lo que hice fue llamar a esto después de que llegué a la cuenta

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

vacío es solo un vacío sin nada, bueno, todo lo que hice fue agregar un comentario,

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

Alguien puede cerrar esto si quiere

¿Fue útil?

Solución

Usted dijo que el intervalo de tiempo de su NSTimer está controlado por un control deslizante. Tal vez esté iniciando una nueva instancia de temporizador cada vez que cambie el valor del control deslizante, por lo que después de un cambio tendría dos temporizadores en ejecución. La primera actualiza la etiqueta e incrementa i . El segundo viene justo después del primero y encuentra que el valor de i se incrementa, por lo que muestra el siguiente fragmento en lugar del actual.

Cuente las instancias de su temporizador: registre el tiempo en la devolución de llamada del temporizador y compare los resultados; puede ser que esté disparando más de uno.

Otros consejos

Mi opinión es que tienes dos acciones diferentes que llaman a este método, cuando crees que debería haber una. Yo pondría un punto de interrupción allí y vería si se detiene donde crees que debería.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top