У меня есть UIBarButtonItem (настраивается в конструкторе интерфейсов). Если пользователь нажмет эту кнопку, будет запущен «тяжелый процесс», и для лучшего взаимодействия с пользователем я хочу изменить эту кнопку с помощью (UIActivityIndicatorView). Я делаю это следующим образом:
self.indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
indicator.hidesWhenStopped = YES;
[self.heavyBarButton initWithCustomView:self.indicator];
[self.indicator startAnimating];
[NSThread detachNewThreadSelector:@selector(animateHeavyProcess) toTarget:self withObject:nil];
animateHeavyProcess:
[self heavyProcess];
[self.indicator stopAnimating];
UIBarButtonItem *originalButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"maximize.png"] style:UIBarButtonItemStylePlain target:self action:@selector(startProcessClick:)];
self.heavyBarButton = originalButton;
[originalButton release];
Что происходит: после того, как пользователь нажмет кнопку, анимация BarButton будет запущена и после обработки кнопка исчезнет. Однако, Я хочу , чтобы исходная кнопка снова отображалась.