MBProgressHUD et UITableView

J'affiche un HUD tout en peuplant le TableView, mais il semble montrer derrière le TableView (séparateur de vue de table cassant le hud).

entrez la description de l'image ici

Voici le code dans 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; } 

Il le fait uniquement avec TableViews.

Le problème ici est que vous ajoutez le HUD lors du chargement de la vue, ce qui est probable avant que votre tableView ne soit affichée, ainsi la tableView est créée et semble couvrir le HUD. Déplacez ce code dans viewDidAppear et votre problème disparaîtra:

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.mode = MBProgressHUDModeText; hud.labelText = @"Loading"; } 

Utilisez self.navigationController.view au lieu de self.view si vous voulez l'implémenter dans viewDidLoad

Incluez ceci:

 #import <QuartzCore/QuartzCore.h> 

Vous pouvez utiliser layer.zPosition pour order la visibilité de vos objects / vues.

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

La plus grande valeur de zPosition, plus de priorité dans l'affichage.

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

}