我正在用它的tableview一个应用程序。 我想实现加载屏幕,使用MBProgressHUD这样它会显示从网络读取数据之前。 然而,数据的使用下面的代码未显示:
- (void)viewDidLoad
{
HUD = [[MBProgressHUDalloc] initWithView:self.view];
[self.viewaddSubview:HUD];
HUD.delegate = self;
[HUD showWhileExecuting:@selector(load_data) onTarget:self withObject:nil animated:YES];
}
该数据可在tableview中使用函数load_data单独(即[自load_data]示出的,但不与HUD。
根据我的经验,使用HUD显示在装载或等待加载数据的时候,你应该调用HUD在-viewDidAppear
方法。 我还注意到,您不包括[超级viewDidLoad中] 调用你的代码。 如果你要出示您的HUD,你将不得不调用它,如果你希望它出现在你的超级viewDidLoad中调用后。 希望这些帮助你。
我喜欢用不同的方法,只有这样做,呈现和隐藏HUD。 例如
#pragma mark - The HUD
-(void)showHudWithText:(NSString *)text {
if (self.hud == nil) {
self.hud = [[[MBProgressHUD alloc] initWithWindow:self.window] autorelease];
[self.window addSubview:hud];
}
[self.hud setLabelText:text];
[self.hud setMode:MBProgressHUDModeIndeterminate];
[self.hud show:YES];
}
-(void)hideHud {
[self.hud hide:YES];
}
这允许HUD从异步方法,计时器等例如独立于视图生命周期的控制,以及:
-(void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showHudWithText:) name:kSomethingImportantStartedNotification object:@"Starting..."];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideHud) name:kSomethingImportantEndedNotification object:nil];
}
或类似的东西。