首页 > 开发 > iOS > 正文

如何刷新tableViewCell上添加的一个View(不是刷新整个cell)

2017-09-08 13:45:19  来源:网友分享

问题如题目所示。

场景:当前tableviewcell是由三个view拼接而成的,加在cell.contentView上。刷新的时候我只需要刷新其中一个cell的一个view里的内容。
但是执行刷新cell方法,是三个view是一起刷新的,导致数据不变的view会闪一下。
请问各位这种场景如何优化?

解决方案

首先很感谢大家的回答,今天看到还有人回复这个问题,我坐下补充

对这个问题,有一点需要更正:
1、出现刷新闪动问题的是CollectionViewCell,我当时以为tableView也会有同样的问题,所以问题里写成了tableViewCell。实时证明,我当时的场景tableView不会出现闪动问题。

解决方案:
1、针对原问题CollectionViewCell闪动,是由于CollectionView隐式动画引起的,可以这样写:

    //关闭隐式动画,防止cell闪动    [UIView performWithoutAnimation:^{        [self reloadItemsAtIndexPaths:@[indexP]];    }];

更多关掉隐式动画方案:http://adad184.com/2015/11/10...
2、针对tableViewCell的刷新,可以在自定义cell写一个方法实现,但是滑动到可见范围之外再回来,状态会回复(因为走了tableView:tableViewcellForRowAtIndexPath)。如果要保持cell的状态不改变只能通过reload方式实现,就是更新数据源。