UILabel отображает только нечетные объекты в NSArray - PullRequest
0 голосов
/ 26 ноября 2009

У меня есть int, который определяет objectAtIndex, который передает его в строку, которая затем отображает его в UILabel, ОДНАКО, когда я изменяю массив (добавьте в него слово в этом случае), когда у меня UILabel идет через массив он отображает только нечетные. Я сделал NSLog и обнаружил, что он пропускает каждую строку в строку, но Label не отображает каждый элемент, он делает это только в первый раз, затем я изменяю массив, и он делает только нечетные

редактировать: код:

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

Все это контролируется NSTimer, который устанавливает его на основе значения ползунка. Также я установлен на 0 в IBAction

Код 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:

Я исправил это! То, что я сделал, это назвал это после того, как я достиг счета

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

empty - пустота, в которой ничего нет, ну, все, что я сделал, это добавил комментарий,

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

Кто-нибудь может закрыть это, если он хочет

Ответы [ 2 ]

1 голос
/ 27 ноября 2009

Вы сказали, что временной интервал вашего NSTimer контролируется ползунком. Возможно, вы запускаете новый экземпляр таймера каждый раз, когда меняете значение ползунка, поэтому после изменения у вас будет работать два таймера. Первый обновляет метку и увеличивает i. Второй идет сразу после первого и обнаруживает, что значение i увеличивается, поэтому вместо текущего отображается следующий блок.

Подсчитайте количество экземпляров вашего таймера - NSLog таймер в обратном вызове таймера и сравните результаты - возможно, вы запускаете более одного.

0 голосов
/ 27 ноября 2009

Я предполагаю, что у вас есть два разных действия, вызывающих этот метод, когда вы думаете, что должно быть одно. Я бы поставил точку останова и посмотрел, остановится ли она там, где, как ты думаешь, должна.

...