列表通过网络加载数据的时候,不要将网络异步加载数据直接给列表项赋值。
原来做android项目开发的时候,在列表通过网络加载数据的时候,也遇到过item 复用也出现过错乱的效果。为什么不直接用它的思路呢?
当正在网络异步加载数据的Cell A,我们可能需要去刷新Cell的UI,这时候,当屏幕滑动,cell B复用A, 本来是想刷新A的,这时候B也刷新了,如果A一直在更新UI,屏幕不断滑动,A就大量的被复用,这个时候就会出现很多错乱的效果。
解决方式:
不要直接将网络加载数据给cell赋值。可以用模型,cell对应一个模型,我把上传和下载的逻辑都写在了模型中,在网络加载过程中变化的数据赋值给对应的模型,并且通知Cell,然后Cell通知给tableView去刷新一下列表(Android当时就是这个思路,可惜没有用到这,费了好久才想明白)。