How do I show and start animating a UIActivityIndicatorView from within a method

南笙酒味 提交于 2019-12-20 03:39:09

问题


I have a method that does a time consuming operation, say something like ten consecutive calls to [[NSString alloc] initWithContentsOfURL:u];

I want a UIActivityIndicatorView that was in a hidden state before the method call to show and animate, so I write:

activityIndicator.hidden = NO;
[activityIndicator startAnimating];

at the beginning of the method

but of course it won't work. The UIActivityIndicatorView will only animate once the method is over.

This is not acceptable. I must show the animation during the function call.

Anyone knows how to do it?

NSOperation maybe? (anyone has a sample thereof?)


回答1:


I assume you are doing some expensive work in this method and while that work is being performed, you want the activity indicator to spin. Expensive work should NOT be done on the main thread (iOS might kill your app!). Put your expensive work on a separate thread with:

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

...and when the method (aSelector) is done, call:

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait 

...and there you stop the activity indicator.

Never call any UI code from within a non-main thread!



来源:https://stackoverflow.com/questions/3317068/how-do-i-show-and-start-animating-a-uiactivityindicatorview-from-within-a-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!