MBProgresshud与tableview

时间:2011-08-10 05:46:08

标签: objective-c mbprogresshud

我正在制作一个带有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];


}

数据可以单独使用load_data函数在tableview中显示(即[self load_data],但不能使用HUD。

2 个答案:

答案 0 :(得分:0)

根据我的经验,当在加载或等待加载数据时使用HUD进行显示时,您应该使用-viewDidAppear方法调用HUD。我还注意到你没有包含[super viewDidLoad];打电话给你的代码。如果您要展示您的HUD,您必须在调用超级viewDidLoad后调用它,如果您想要它出现。希望这些可以帮到你。

答案 1 :(得分:0)

我喜欢用不同的方法来呈现和隐藏​​HUD。 e.g。

#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];
}

或类似的东西。