...
@implementation RootViewController
...
@synthesize cLoadingView;
...
- (IBAction)doSomethingComplexAndTimeConsuming {
// this is how we start spinning
[NSThread detachNewThreadSelector: @selector(spinBegin) toTarget:self withObject:nil];
...
// TODO: something very complex and time consuming
// you can also add extra wait for the test (just uncomment line below)
//[NSThread sleepForTimeInterval:3]
...
// stop waiting...
[NSThread detachNewThreadSelector: @selector(spinEnd) toTarget:self withObject:nil];
...
// TODO: continue with our application
}
...
- (void)initSpinner {
cLoadingView = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge] autorelease];
// we put our spinning "thing" right in the center of the current view
CGPoint newCenter = (CGPoint) [self.view center];
cLoadingView.center = newCenter;
[self.view addSubview:cLoadingView];
}
...
- (void)spinBegin {
[cLoadingView startAnimating];
}
...
- (void)spinEnd {
[cLoadingView stopAnimating];
}
...
- (void)viewDidLoad {
[self initSpinner];
[super viewDidLoad];
}
...
@end
...