不喜欢说废话,如果你选择看这篇文章,那对tableView就有一定的了解,所以我也不多说了。关于今天的主题,我还没有具体在项目中碰到过(此前并没有相关的需求),是一个朋友在聊天中询问我的,我于是也试了一下。
在没有做任何处理的情况下,我在前七个Cell中的textField(显示在屏幕上的Cell)输入了一些字符,然后上滑拉去下面的Cell,可以发现第第九个和第十个Cell中的textField尽然已经有内容了(第八个并没有复用,因为第八个出现时第一个还在屏幕上并没有完全消失,所以未放入重用队列),原因就是因为第八个和第九个Cell重用了从屏幕上消失而放进重用队列的第一个和第二个Cell,如果你继续往下拉的话就会发现第十一个重用了第三个Cell,以此类推。
所以如果不做任何处理,由于UITableView的重用机制就会导致类似的问题,如果Cell的高度不同且能够手动改变的话还有更复杂的问题,今天不做分析,就来解决目前的问题。首先还是上代码吧:
用一个代码块来完成textField文本信息改变后的传值操作。
在textField中的代理方法中将修改过后的文本内容传递出去
具体步骤和原理我已经注释清楚了,总的原则就是用一个数据结构保存Cell中不固定部分的属性值或者内容,在每次加载Cell时重新对Cell的这部分属性或者内容赋值,希望能够帮您解决问题,谢谢浏览!