/ / UITableView n'étant pas affiché après le rechargement de données - ios, objective-c, json, uitableview, reloaddata

UITableView non affiché après le rechargement de données - ios, objective-c, json, uitableview, reloaddata

J'ai un problème étrange avec mon tableView. Je charge des données via JSON dans mon tableView. Alors que le JSON est demandé sur le Web dans une autre classe, j'affiche une vue d'indicateur d'activité dans ma vue actuelle et la tableView est masquée. J'ai une méthode déléguée, qui est appelée dès que le JSON est prêt.

-(void)didReceivePlayers:(NSArray *)players {
[activityIndicator stopAnimating];
tableViewPlayers.hidden = false;
startButton.hidden = false;
playersData = [[NSMutableArray alloc] initWithArray:players];
[tableViewPlayers reloadData];
NSLog(@"done reloading");
}

La méthode s'appelle parfaitement. Le code est assez simple. Je cache mon indicateur d'activité et affiche mon tableau. Ensuite, j'appelle reloadData. Cela ne prend que quelques millisecondes. MAIS après reloadData, mon activitéIndicator est toujours affichée et il faut plusieurs secondes pour afficher ma vue de table, bien que le nslog soit appelé tout de suite.

J'ai aussi essayé d'appeler des données de rechargement dans mainThread, mais cela n'a rien changé.

Merci de votre aide!

Réponses:

2 pour la réponse № 1

Assurez-vous que le code est en cours d'exécution sur le thread principal. Vous pouvez utiliser la file d’opérations principale comme ceci:

-(void)didReceivePlayers:(NSArray *)players {

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[activityIndicator stopAnimating];
tableViewPlayers.hidden = false;
startButton.hidden = false;
playersData = [[NSMutableArray alloc] initWithArray:players];
[tableViewPlayers reloadData];
NSLog(@"done reloading");
}];

}