0

テーブルビューを含むアプリケーションを作成しています。データがインターネットから読み取られる前に表示されるように 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 のみを使用してデータをテーブルビューに表示できます (つまり、[self load_data] ですが、HUD を使用することはできません。

4

2 に答える 2

0

私の経験では、HUD を使用してデータのロード中またはロード待ち中に表示する場合は、-viewDidAppearメソッドで HUD を呼び出す必要があります。[super viewDidLoad]; が含まれていないことにも気付きました。コードを呼び出します。HUD を表示する場合は、スーパー 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 に答える