我有一个tableView
,需要在重新加载tableView
后执行一项功能。我如何知道reloadData
是否已完成?假设我有方法A填充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];
}
答案 0 :(得分: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
}];
答案 1 :(得分:2)
问题是您在启动URL请求后立即致电reloadData
。这没有意义,因为此时请求尚未完成。
使用来自网址请求的响应更新数据源后,正确的方法是在reloadData
中调用methodB
和connectionDidFinishLoading
。此时,您知道行数是否为零,并且无需等待以使表视图更新完成。
答案 2 :(得分:2)
从服务器获取更新的数据后,我的表就会出现。
当表重新加载完成时,我使用以下代码片段来隐藏进度条。
[UIView animateWithDuration:0 animations:^{
[your_table_view reloadData];
} completion:^(BOOL finished)
{
//Table reload completed TODO here
//Hide progress bar etc.
}];