仅在reloadData完成后调用函数

我有一个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]; } 

问题是你在启动URL请求后立即调用reloadData 。 这是没有道理的,因为请求尚未完成。

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

你可以在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 }]; 

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

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

 [UIView animateWithDuration:0 animations:^{ [your_table_view reloadData]; } completion:^(BOOL finished) { //Table reload completed TODO here //Hide progress bar etc. }];