Would it not be nice to have a activity indicator (the spinning busy ‘wheel’) to just throw in wherever you want in an IPhone app? I think so too, so I compiled a singleton activity indicator class to use in my apps.
ActivityIndicator.h
#import <Foundation/Foundation.h> @interface ActivityIndicator : UIAlertView { UIActivityIndicatorView *activityView; } @property (nonatomic, retain) UIActivityIndicatorView *activityView; - (void) close; + (id)sharedManager; @end
ActivityIndicator.m
#import "ActivityIndicator.h" static ActivityIndicator *sharedManager = nil; @implementation ActivityAlertView @synthesize activityView; #pragma mark - #pragma mark Singleton Methods + (id)sharedManager { @synchronized(self) { if(sharedManager == nil) sharedManager = [[super allocWithZone:NULL] init]; } return sharedManager; } + (id)allocWithZone:(NSZone *)zone { return [[self sharedManager] retain]; } - (id)copyWithZone:(NSZone *)zone { return self; } - (id)retain { return self; } - (unsigned)retainCount { return UINT_MAX; } - (void)release { // a singleton should never be release } - (id)autorelease { return self; } #pragma mark - #pragma mark Init Methods - (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { self.activityView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 80, 30, 30)]; [self addSubview:activityView]; activityView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; [activityView startAnimating]; } return self; } #pragma mark - #pragma mark My Methods - (void) close { [self dismissWithClickedButtonIndex:0 animated:YES]; } #pragma mark - #pragma mark Memory Methods - (void) dealoc { [activityView release]; [super dealloc]; } @end
Usage:
Initialize and show:
#import "ActivityIndicator.h" ActivityIndicator *activityIndicator = [[[ActivityIndicator sharedManager] initWithTitle:@"Fetching highscores" message:@"Please wait..." delegate:self cancelButtonTitle:nil otherButtonTitles:nil] autorelease]; // Show indicator [activityIndicator show];
Stop/hide activity indicator in another object:
#import "ActivityIndicator.h" //Get singleton instance ActivityIndicator *activityIndicator = [ActivityIndicator sharedManager]; //Close activity indicator [activityIndicator close];