首页 > 学院 > 开发设计 > 正文

关于cell局部刷新

2019-11-09 15:54:50
字体:
来源:转载
供稿:网友

所谓NSIndexPath,主要用来标识cell在列表中的坐标位置,其有两个属性:section、row,section是用来标识cell处于第几个section中,row是用来说明cell在该section中的第几行。

两种tableview. collectionview局部刷新方式

1. 刷新特定行row:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:2];

  [_mainCollectionView reloadItemsAtIndexPaths:@[indexPath]];

2. 刷新特定分区section:
NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndex:0];[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];

 NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:3];

[_mainCollectionView reloadSections:indexSet];

传入参数就是要刷新的cell所在的indexPath组成的数组。 
但,reloadItemsAtIndexPath默认会有一个动画的过程,cell内容更新的瞬间会出现原内容与新内容重叠的情况。那么使用如下方式取消该动画即可:

[UIView performWithoutAnimation:^{    [self.collectionView reloadItemsAtIndexPaths:@[indexPath]];}];UITableView

UITableView的reloadSections方法也有同样的情况:

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];而使用reloadData进行全部cell的更新,则没有这个默认的动画过程。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表