/ / UITableView não sendo exibido após o recarregamento de dados - ios, objetivo-c, json, uitableview, reloaddata

UITableView não sendo exibido após recarregar dados - ios, object-c, json, uitableview, reloaddata

Estou com um problema estranho com o meu tableView. Carrego dados via JSON no meu tableView. Enquanto o JSON está sendo solicitado da Web em outra classe, mostro uma exibição do indicador de atividade na minha exibição atual e o tableView está oculto. Eu tenho um método delegado, que é chamado assim que o json estiver pronto.

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

O método está sendo chamado perfeitamente. O código é bastante direto. Oculto meu indicador de atividade e mostro meu tableView. Então eu chamo reloadData. Leva apenas alguns milissegundos. MAS, após reloadData, meu activityIndicator ainda é mostrado e leva alguns segundos para mostrar minha tableview, embora o nslog esteja sendo chamado imediatamente.

Também tentei chamar os dados de recarga no mainThread, mas isso não mudou nada.

Obrigado pela ajuda!

Respostas:

2 para resposta № 1

Certifique-se de que o código esteja sendo executado no thread principal. Você pode usar a fila de operações principal como esta:

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

}