UILabel отображает только нечетные объекты в NSArray
Вопрос
У меня есть int, который определяет objectAtIndex, который передает его в строку, которая затем отображает его в UILabel, ОДНАКО, когда я изменяю массив (в данном случае добавляю к нему слово), когда у меня есть UILabel, проходящий через массив он отображает только нечетные.Я сделал NSLog и обнаружил, что он ПЕРЕДАЕТ ВСЮ ОДНУ ВЕЩЬ в строку, но метка не отображает каждую из них, она делает это только в первый раз, затем я изменяю массив, и он делает только нечетные
редактировать:код:
- (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];
РЕДАКТИРОВАТЬ:
Я починил это!Я назвал это после того, как дошёл до счёта
-(void)stoptimer
{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:(.01) target:self selector:@selector(empty) userInfo:nil repeats:YES];
}
«пусто» — это просто пустота, в которой нет ничего, ну, я всего лишь добавил комментарий,
//don't look over here, nothing to see here, oh look at that
Кто-то может закрыть это, если захочет
Решение
Вы сказали, что временной интервал вашего NSTimer контролируется ползунком.Возможно, вы запускаете новый экземпляр таймера каждый раз, когда меняете значение ползунка, поэтому после изменения у вас будет два таймеры работают.Первый обновляет метку и увеличивает i
.Второй приходит сразу за первым и находит i
значение увеличилось, поэтому вместо текущего фрагмента отображается следующий.
Подсчитайте экземпляры вашего таймера - NSLog таймера в обратном вызове таймера и сравните результаты - возможно, вы запускаете более одного.
Другие советы
Я предполагаю, что у вас есть два разных действия, вызывающих этот метод, хотя вы думаете, что должно быть одно.Я бы поставил там точку останова и посмотрел, остановится ли она там, где, по вашему мнению, должно быть.