Je faisais tout en un seul thread et je viens de commencer à passer aux appels asynchronouss, donc je suis un peu confus.
Ce que je voudrais, c'est que la vue soit chargée, soit avec une table vide, soit sans table du tout. MBProgressHUD doit s'afficher pendant que l'appel async obtient datatables. Ensuite, lorsque datatables sont trouvées, le HUD disparaît et la table se rafraîchit.
Ce que j'ai maintenant, c'est que tout fonctionne, sauf que le HUD est affiché sous la table vide. Voici le code le plus pertinent.
- (void)awakeFromNib { [super awakeFromNib]; [MBProgressHUD showHUDAddedTo:self.tableView animated:YES]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ self.dataController = [[StudyController alloc] initWithCredentials:email password:password]; dispatch_sync(dispatch_get_main_queue(), ^{ [MBProgressHUD hideHUDForView:self.tableView animated:YES]; [self.tableView reloadData]; }); }); }
Ce qui se passe, je pense, c'est tout mon code qui rendait la table correctement exécuté une fois pendant que l'appel asynchronous était en cours d'exécution, et une table vide sur le HUD, et encore après l'appel quand je le reloadData . Comment puis-je l'empêcher de courir cette première fois?
Merci.
Il est difficile de jauger sans voir les methods delegate / datasource de votre vue de table, mais votre intuition a du sens. Dans ce cas, je peux voir deux options:
J'opte généralement pour la deuxième méthode, parce que je préfère concentrer mes methods de source de données et de déléguer sur la seule vue de la table.
J'espère que cela t'aides!