0

我有一个tableView并且需要tableView在重新加载后执行一个功能。我怎么知道是否reloadData已经完成?假设我有填充 的methodA tableView,一旦[tableView1 reloadData]完成,我想调用methodB。谁能帮我这个?我一直在寻找几个小时...谢谢!

- (void) methodA
{

    NSString *URLa = [NSString stringWithFormat:@"http://www.website.com/page.php?
    v1=%@&v2=%@&v3=%@",v1, v2, v3];

    NSURL *url = [NSURL URLa];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    (void) [[NSURLConnection alloc] initWithRequest:request delegate:self];

    [tableView1 reloadData];

}
4

3 回答 3

5

您可以在 UITableView 甚至子类 UITableView 上添加方法/类别:

-(void)reloadDataAndWait:(void(^)(void))waitBlock {
    [self reloadData];//if subclassed then super. else use [self.tableView
    if(waitBlock){
        waitBlock();
    }
}

你需要把它用作

[self.tableView reloadDataAndWait:^{
    //call the required method here                                            
}];
于 2013-03-05T08:23:01.297 回答
2

问题是您reloadData在启动 URL 请求后立即调用。这没有意义,因为此时请求尚未完成。

正确的方法是在使用 URL 请求的响应更新数据源之后调用reloadDataand methodBin 。connectionDidFinishLoading此时您知道行数是否为零,并且无需等待表视图更新完成。

于 2013-03-05T09:57:33.117 回答
2

一旦我从服务器获取我的表的更新数据。

当表重新加载完成时,我使用以下代码片段来隐藏进度条。

[UIView animateWithDuration:0 animations:^{
            [your_table_view reloadData];
        } completion:^(BOOL finished)
        {
            //Table reload completed TODO here
            //Hide progress bar etc.
        }];
于 2016-03-14T10:51:23.370 回答