MBProgresshud с табличным представлением

Я делаю приложение с табличным представлением. Я хотел бы реализовать экран загрузки, используя 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.


person lfcmich    schedule 10.08.2011    source источник


Ответы (2)


По моему опыту, при использовании HUD для отображения во время загрузки или ожидания загрузки данных вы должны вызывать HUD в методе -viewDidAppear. Я также заметил, что вы не включили [super viewDidLoad]; позвоните в свой код. Если вы собираетесь представить свой HUD, вам придется вызывать его после вызова super viewDidLoad, если вы хотите, чтобы он отображался. Надеюсь, это поможет вам.

person Bill Burgess    schedule 05.01.2012

Мне нравится отображать и скрывать 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];
}

Или что-то вроде того.

person QED    schedule 23.02.2012