[b setNeedsDisplay];
Я также не рекомендовал бы спать основной поток (как вы делаете здесь), так как это отключает все взаимодействие с пользователем.
Есть несколько альтернатив. Можно использовать NSTimer
для выполнения определенного метода один раз в секунду. Однако более простым способом было бы сделать что-то вроде:
for (NSUInteger idx = 0; idx < [buttonMapping count]; idx++) {
UIButton * b = [buttonMapping objectAtIndex:idx];
[b performSelector:@selector(setNormalStateTitle:) withObject:@"yo!" afterDelay:(idx*60)];
}
Затем добавьте в UIButton метод (т. Е. Категорию) с именем setNormalStateTitle:
, который просто выполняет метод setTitle:forControlState:
. При таком подходе вам вообще не понадобится метод setNeedsDisplay
.