一。问题描述
本项目是一个办公软件,所以有很多的填写项,例如,报销模块 需要填写报销金额,报销事由,报销物品名称,明细列表等等,而且还是很多个报销形成写在一个表格里面的,可以动态添加多个报销账单。那么首先想到的就是使用TableFiled,动态的添加区,每一个区代表一个账单,这个基本思路。那么功能实现之后,可以动态添加区,没毛病,然后的然后,当你获取数据的时候,问题来了,如果你使用NSIndexpath 获取数据的话,你就会发现,有的时候获取的数据为空值,为有的时候获取的数据却是完整的,这是为什么呢?
原因就在于,当你使用NSIndexPath 获取当前的cell,通过cell 来寻找子控件TextFiled 上的字符串的时候,找到的并不是精确的那个textFiled ,因为当你填写多个TextFile 的时候,由于你的滑动或者随着填写的数据增加 导致单元格的重用,然后当你获取到NSIndexPath 标记的那个cell 的时候,其实他已经被重用了,通过子控件记录的数据,已经丢失了。这就是为什么当你不滑动重用表格的时候,通过NSIndexPath 获得的值为正确的,当你滑动之后通过NsIndexPath 获得的值为空的原因了。
二,解决办法
创建一个数据源Model ,将填写的数据赋值给model的相应字段进行记录,刷新展示的时候,从model数据源取值来给对用的单元格赋值。上传数据的时候,也需要从model数据源中取值。这样就不会出现随着单元格的重用,而导致数据丢失的问题了。
网友评论