? ? ? 不喜歡說廢話浙值,如果你選擇看這篇文章,那對tableView就有一定的了解檩小,所以我也不多說了开呐。關于今天的主題,我還沒有具體在項目中碰到過(此前并沒有相關的需求),是一個朋友在聊天中詢問我的负蚊,我于是也試了一下神妹。
沒做任何處理情況
? ? ? 在沒有做任何處理的情況下,我在前七個Cell中的textField(顯示在屏幕上的Cell)輸入了一些字符家妆,然后上滑拉去下面的Cell鸵荠,可以發(fā)現(xiàn)第第九個和第十個Cell中的textField盡然已經(jīng)有內容了(第八個并沒有復用,因為第八個出現(xiàn)時第一個還在屏幕上并沒有完全消失伤极,所以未放入重用隊列)蛹找,原因就是因為第八個和第九個Cell重用了從屏幕上消失而放進重用隊列的第一個和第二個Cell,如果你繼續(xù)往下拉的話就會發(fā)現(xiàn)第十一個重用了第三個Cell哨坪,以此類推庸疾。
? ? ? 所以如果不做任何處理,由于UITableView的重用機制就會導致類似的問題当编,如果Cell的高度不同且能夠手動改變的話還有更復雜的問題届慈,今天不做分析,就來解決目前的問題忿偷。首先還是上代碼吧:
Cell屬性定義
用一個代碼塊來完成textField文本信息改變后的傳值操作金顿。
Cell中具體方法
在textField中的代理方法中將修改過后的文本內容傳遞出去
Cell方法內部
? ? ? 具體步驟和原理我已經(jīng)注釋清楚了,總的原則就是用一個數(shù)據(jù)結構保存Cell中不固定部分的屬性值或者內容鲤桥,在每次加載Cell時重新對Cell的這部分屬性或者內容賦值揍拆,希望能夠幫您解決問題,謝謝瀏覽茶凳!