MBProgressHUD

last edited January 4, 2010 11:41:46 (193.77.101.76)
CocoaDev is sponsored by: Panic: Shockingly good Mac software!

MBProgressHUD is replacement for the undocumented UIProgressHUD UIKit class with some additional features. The class displays s translucent HUD with a progress indicator and some optional labels while work is being done in a background thread. The HUD can show both determinate and indeterminate progress.

More info and download: http://github.com/matej/MBProgressHUD and http://www.bukovinski.com

#import <UIKit/UIKit.h>
#import "MBProgressHUD.h"

@interface HudDemoViewController : UIViewController <MBProgressHUDDelegate> {
	MBProgressHUD *HUD;
}

- (IBAction) showWithLabel:(id)sender;

- (void) myTask;

@end

#import "HudDemoViewController.h"

@implementation HudDemoViewController

- (IBAction) showWithLabel:(id)sender {

	// Should be initialized with the windows frame so the HUD disables all user input by covering the entire screen
	HUD = [[MBProgressHUD alloc] initWithWindow:[UIApplication sharedApplication].keyWindow];

	// Add HUD to screen
	[self.view.window addSubview:HUD];

	// Regisete for HUD callbacks so we can remove it from the window at the right time
	HUD.delegate = self;

	HUD.labelText = @"Loading";

	// Show the HUD while the provided method executes in a new thread
	[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];

}

- (void) myTask {
	// Do something usefull in here instead of sleeping ...
	sleep(3);
}

- (void)hudWasHidden {
	// Remove HUD from screen when the HUD was hidded
	[HUD removeFromSuperview];
	[HUD release];
}

@end