我的tableView有一个奇怪的问题。 我通过JSON将数据加载到我的tableView中。当在另一个类中从Web请求JSON时,我在当前视图中显示活动指示器视图,并隐藏tableView。 我有一个委托方法,只要json准备好就会调用它。
-(void)didReceivePlayers:(NSArray *)players {
[activityIndicator stopAnimating];
tableViewPlayers.hidden = false;
startButton.hidden = false;
playersData = [[NSMutableArray alloc] initWithArray:players];
[tableViewPlayers reloadData];
NSLog(@"done reloading");
}
该方法被称为完美。 代码很简单。我隐藏了我的活动指示器并显示我的tableView。 然后我调用reloadData。它只需几毫秒。但是在reloadData之后,我的activityIndicator仍然显示,显示我的tableview需要几秒钟,尽管现在正在调用nslog。
我也试过在mainThread中调用重载数据,但这没有改变。
感谢您的帮助!
答案 0 :(得分:2)
确保代码正在主线程上执行。您可以像这样使用主操作队列:
-(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");
}];
}