美文网首页
多个按钮刷新一个tableview。在第二个上下滚动时,突然点击

多个按钮刷新一个tableview。在第二个上下滚动时,突然点击

作者: 06f43b0b52f7 | 来源:发表于2017-09-06 17:51 被阅读27次

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];
    
    
}

相关文章

网友评论

      本文标题:多个按钮刷新一个tableview。在第二个上下滚动时,突然点击

      本文链接:https://www.haomeiwen.com/subject/bmyvjxtx.html