2014-08-29 11 views
7

Ich zeige ein HUD an, während das TableView gefüllt wird, aber es scheint, dass es hinter dem TableView angezeigt wird (tableview separator breaking the hud).MBProgressHUD und UITableView

enter image description here

Hier ist der Code in dem Tableviewcontroller:

- (void)viewDidLoad { 
[super viewDidLoad]; 

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.mode = MBProgressHUDModeText; 
hud.labelText = @"Loading"; 

// Populate the table 
[self getTableData]; 

self.tableView.rowHeight = 90; 
} 

Es ist dies mit nur Tableviews zu tun.

Antwort

12

Das Problem hier ist, dass Sie das HUD hinzufügen, wenn die Ansicht geladen wird, was wahrscheinlich ist, bevor Ihr TableView angezeigt wurde, so dass das TableView erstellt wird und die HUD zu decken scheint. Bewegen Sie diesen Code in viewDidAppear und Ihr Problem wird weggehen:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    hud.mode = MBProgressHUDModeText; 
    hud.labelText = @"Loading"; 
} 
+1

einen Blick auf diese Antwort nehmen: http://stackoverflow.com/a/28293970/3045072 – user3045072

12

Verwenden self.navigationController.view statt self.view wenn Sie implementieren möchten in viewDidLoad

9

Fügen Sie diese:

#import <QuartzCore/QuartzCore.h> 

Sie Schicht verwenden können .zPosition, um die Sichtbarkeit Ihrer Objekte/Ansichten zu bestimmen.

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.mode = MBProgressHUDModeText; 
hud.labelText = @"Loading"; 
hud.layer.zPosition = 2; 
self.tableView.layer.zPosition = 1; 

Der höhere zPosition-Wert, mehr Priorität in der Anzeige.

+0

dies die akzeptierte Antwort sein sollte! und die Demo von 'MBProgressHUD' benutzen das auch – armnotstrong

+0

danke @ Armnotstrong – user3045072

0
Even in ViewDidLoad also we can handle it like this:: 
    - (void)viewDidLoad { 
[super viewDidLoad];  
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    hud.labelText = @"Loading.."; 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ 
    [self contactsFromAddressBook]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 
     [self.tableView reloadData]; 

    }); 
    }); 

}