UIActivityIndicator не работает должным образом? - PullRequest
3 голосов
/ 27 мая 2010

У меня проблема с UIActivityIndicator. Я применил [spinner startAnimating] на IBAction для кнопки, а затем выполнил некоторый процесс. После завершения процесса указатель активности должен быть остановлен, а затем перейти к другому представлению. Но индикатор активности не появляется. Когда я убираю строку «[spinner stopAnimating]», появляется индикатор, но не в тот момент, когда нажата кнопка. Он появляется непосредственно перед загрузкой другого представления и, по-видимому, не появляется, я имею в виду, что он не появляется, но если мы видим очень внимательно, то только на мгновение появляется.

Спасибо заранее за любой ответ.

Ответы [ 4 ]

11 голосов
/ 27 мая 2010

Ole в значительной степени правильно, но есть одна хитрость: вы не возражаете против синхронной обработки (часто именно из-за этого, прежде всего, для отображения индикатора активности).

Сначала переместите ваш код, который вы хотите обработать, пока спиннер работает по своему собственному методу. Тогда сделай

[spinner startAnimating];
[self performSelector:@selector(methodname) withObject:nil afterDelay:0];

AfterDelay: 0 означает следующий раз в цикле выполнения. Таким образом, прядильщик начинает.

4 голосов
/ 27 мая 2010

Вы должны запустить в селекторе выполнения.

Например:

[self performSelector:@selector(animation) withObject:nil afterDelay:0]

-(void)animation

{

NSAutoreleasepool *pool = [[NSAutorepleasepool alloc]init];

[indicatorView startAnimating];

[pool release];

}
4 голосов
/ 27 мая 2010

Анимация не запустится, пока ваш код не вернет управление в цикл выполнения. Если ваша задача обработки блокирует основной поток, обновления пользовательского интерфейса не будут выполняться до ее завершения. Вы должны выполнять свою обработку асинхронно (например, запуская NSOperation).

0 голосов
/ 18 сентября 2011

Это старый вопрос.Я оставляю свой ответ здесь , чтобы помочь кому-то решить его проблему.

...