Как заставить UIButton обновить? - PullRequest
2 голосов
/ 25 октября 2009

У меня есть рабочий фрагмент кода:

for (UIButton *b in buttonMapping) {
    [b setTitle:@"yo!" forState:UIControlStateNormal];
    [NSThread sleepForTimeInterval:1.0];
}

Там четыре кнопки, все четыре кнопки обновляются. Однако вместо обновления один раз в секунду уходит четыре секунды, и все они обновляются.

Как заставить UIButton обновиться? Или это не рекомендуемый метод для сна?

1 Ответ

5 голосов
/ 25 октября 2009

[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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...