Проблема в том, что вы не даете циклу выполнения возможность работать (и, следовательно, происходит рисование). Вы захотите использовать NSTimer
, который периодически запускается и устанавливает следующий текст (вы можете помнить переменную экземпляра, где вы находитесь в данный момент).
Или используйте что-то вроде этого (при условии, что элементы NSArray
содержат ваши строки):
- (void)updateText:(NSNumber *)num
{
NSUInteger index = [num unsignedInteger];
[label setText:[items objectAtIndex:index]];
index++;
// to loop, add
// if (index == [items count]) { index = 0; }
if (index < [items count]) {
[self performSelector:@selector(updateText:) withObject:[NSNumber numberWithUnsignedInteger:index] afterDelay:0.5];
}
}
В начале (например, в viewDidAppear:
), вы можете позвонить
[self updateText:[NSNumber numberWithUnsignedInteger:0]];
для запуска первоначального обновления.
Конечно, вам нужно убедиться, что выполнение не продолжается, когда ваше представление исчезает, вы можете сделать это, отменив executeSelector, или если вы используете таймер, просто аннулируйте его или используйте логическое значение, или ...
А если вы хотите стать действительно модным, используйте GCD:)