/ / UITableView sa nezobrazuje po načítaní údajov - ios, object-c, json, uitableview, reloaddata

Po opätovnom načítaní údajov sa nezobrazuje súbor UITableView - ios, objective-c, json, uitableview, reloaddata

Mám podivný problém s mojím zobrazením tabuľky. Načítam údaje cez JSON do môjho TableView. Kým je JSON vyžiadaný z webu v inej triede, v mojom aktuálnom zobrazení zobrazujem zobrazenie ukazovateľa aktivity a tableView je skrytá. Mám delegátsku metódu, ktorá sa volá hneď, ako bude json pripravený.

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

Táto metóda sa nazýva dokonale. Kód je celkom vpred. Skryjem ukazovateľ aktivity a zobrazujem môj tableView. Potom zavolám reloadData. Zaberie to iba niekoľko milisekúnd. Ale po reloadData, môj activityIndicator je stále zobrazený a to trvá niekoľko sekúnd, aby sa zobrazil môj tableview, hoci nslog sa volá ihneď.

Tiež som sa pokúsil volať znovu načítať dáta v mainThread, ale to nič nezmenilo.

Vďaka za vašu pomoc!

odpovede:

2 pre odpoveď č. 1

Uistite sa, že sa kód vykonáva v hlavnom vlákne. Môžete použiť front hlavných operácií, ako je tento:

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

}