0

我正在制作一个带有表格视图的应用程序。我想使用 MBProgressHUD 实现一个加载屏幕,以便在从 Internet 读取数据之前显示它。但是,未使用以下代码显示数据:

- (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。

4

2 回答 2

0

以我的经验,在加载或等待数据加载时使用HUD显示时,您应该在-viewDidAppear方法中调用HUD。我还注意到您没有包含 [super viewDidLoad]; 调用你的代码。如果你要展示你的HUD,你必须在调用super viewDidLoad之后调用它,如果你想让它出现。希望这些对您有所帮助。

于 2012-01-05T18:54:13.163 回答
0

我喜欢使用单独的方法来呈现和隐藏​​ 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];
}

或类似的东西。

于 2012-02-23T08:37:42.193 回答