列表通過網(wǎng)絡(luò)加載數(shù)據(jù)的時候,不要將網(wǎng)絡(luò)異步加載數(shù)據(jù)直接給列表項賦值。
原來做android項目開發(fā)的時候,在列表通過網(wǎng)絡(luò)加載數(shù)據(jù)的時候,也遇到過item 復(fù)用也出現(xiàn)過錯亂的效果。為什么不直接用它的思路呢?
當(dāng)正在網(wǎng)絡(luò)異步加載數(shù)據(jù)的Cell A,我們可能需要去刷新Cell的UI,這時候,當(dāng)屏幕滑動,cell B復(fù)用A, 本來是想刷新A的,這時候B也刷新了,如果A一直在更新UI,屏幕不斷滑動,A就大量的被復(fù)用,這個時候就會出現(xiàn)很多錯亂的效果。
解決方式:
不要直接將網(wǎng)絡(luò)加載數(shù)據(jù)給cell賦值??梢杂媚P?,cell對應(yīng)一個模型,我把上傳和下載的邏輯都寫在了模型中,在網(wǎng)絡(luò)加載過程中變化的數(shù)據(jù)賦值給對應(yīng)的模型,并且通知Cell,然后Cell通知給tableView去刷新一下列表(Android當(dāng)時就是這個思路,可惜沒有用到這,費(fèi)了好久才想明白)。