UITableView判断reloadData结束(iOS)
原创 2015年09月18日 23:46:45 1152282
如果在reloadDate后需要立即获取tableview的cell、高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是有可能出问题的。
reloadDate并不会等待tableview更新结束后才返回,而是立即返回,然后去计算表高度,获取cell等。
如果表中的数据非常大,在一个run loop周期没执行完,这时,需要tableview视图数据的操作就会出问题了。
apple并没有直接提供reloadData的api,想要程序延迟到reloadData结束在操作,可以用以下方法
方法1:
[objc] view plain copy
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
//刷新完成
eg:
UIButton *btn = (UIButton *)[self.view viewWithTag:(40)];
UIButton *btn1 = (UIButton *)[self.view viewWithTag:(41)];
UIButton *btn2 = (UIButton *)[self.view viewWithTag:(42)];
if (button.tag == 40) {
[btn setBackgroundColor:Thme_Color];
[btn1 setBackgroundColor:[UIColor whiteColor]];
[btn2 setBackgroundColor:[UIColor whiteColor]];
_mediatype=1;//手机本地
_isVedio = NO;
[self.CloudtableView.mj_header beginRefreshing];
[self.CloudtableView layoutIfNeeded];
}else if (button.tag == 41) {
[btn setBackgroundColor:[UIColor whiteColor]];
[btn1 setBackgroundColor:Thme_Color];
[btn2 setBackgroundColor:[UIColor whiteColor]];
_mediatype=2;//云端
_isVedio = NO;
[self.CloudtableView.mj_header beginRefreshing];
[self.CloudtableView layoutIfNeeded];
}else if(button.tag == 42){
[btn setBackgroundColor:[UIColor whiteColor]];
[btn1 setBackgroundColor:[UIColor whiteColor]];
[btn2 setBackgroundColor:Thme_Color];
_mediatype =3;//设备的
[_devicearry removeAllObjects];
// [self.CloudtableView reloadData];
[self.CloudtableView.mj_header beginRefreshing];
[self.CloudtableView layoutIfNeeded];
}
网友评论