UITableView中cell嵌套UITextField(UITextView)引起的复用问题

      不喜欢说废话,如果你选择看这篇文章,那对tableView就有一定的了解,所以我也不多说了。关于今天的主题,我还没有具体在项目中碰到过(此前并没有相关的需求),是一个朋友在聊天中询问我的,我于是也试了一下。

没做任何处理情况

      在没有做任何处理的情况下,我在前七个Cell中的textField(显示在屏幕上的Cell)输入了一些字符,然后上滑拉去下面的Cell,可以发现第第九个和第十个Cell中的textField尽然已经有内容了(第八个并没有复用,因为第八个出现时第一个还在屏幕上并没有完全消失,所以未放入重用队列),原因就是因为第八个和第九个Cell重用了从屏幕上消失而放进重用队列的第一个和第二个Cell,如果你继续往下拉的话就会发现第十一个重用了第三个Cell,以此类推。

      所以如果不做任何处理,由于UITableView的重用机制就会导致类似的问题,如果Cell的高度不同且能够手动改变的话还有更复杂的问题,今天不做分析,就来解决目前的问题。首先还是上代码吧:

Cell属性定义

用一个代码块来完成textField文本信息改变后的传值操作。

Cell中具体方法

在textField中的代理方法中将修改过后的文本内容传递出去

Cell方法内部

      具体步骤和原理我已经注释清楚了,总的原则就是用一个数据结构保存Cell中不固定部分的属性值或者内容,在每次加载Cell时重新对Cell的这部分属性或者内容赋值,希望能够帮您解决问题,谢谢浏览!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容