重新加载数据后不显示UITableView

时间:2013-11-02 17:53:14

标签: ios objective-c json uitableview reloaddata

我的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之后,我的activityIndi​​cator仍然显示,显示我的tableview需要几秒钟,尽管现在正在调用nslog。

我也试过在mainThread中调用重载数据,但这没有改变。

感谢您的帮助!

1 个答案:

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

}