仅在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
调用reloadData
和methodB
。 此时,您知道行数是否为零,并且不需要等待表视图更新完成。
你可以在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. }];