我有很长的文本字段列表,所以我使用的是 tableView。
this is how the screen looks like
当我在其中一个单元格的文本字段中插入一些文本并向下滚动时,其他一些单元格获得相同的文本字段值。我不知道为什么会这样。
现在这是我的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! RelatieToevoegenCell
cell.label.text = items[indexPath.row]
cell.textfield.placeholder = items[indexPath.row]
return cell
}
最佳答案
您的主要问题是您将数据保存在 View (UITableVieCell) 中。
单元格被 UITableView 重用以优化性能——所以即使你的表格中有 100 万行,内存中也只有很少的 UITableViewCells(通常在屏幕上可见的数量)。
当您调用 dequeueReusableCell
时,它会获取一个已经存在的单元格并重新使用它。
要解决这个问题,您需要将数据单独保存在一个数组中,并将修改后的文本保存在那里。 然后您需要修改您发布的代码,以便每次从“数据源”配置 UITableView 时获取数据。
还有一个很好的做法是在重用时重置 UITableViewCell,您可以通过在 prepareForReuse 中添加代码来实现。 - 但这是可选的,因为无论如何都会从您的数据源设置文本。
我还建议您在开始进一步编码之前阅读这篇文章 - 它将有助于理解 UITableView 在 iOS 上的工作方式:
关于ios - Swift tableview 在编辑一个单元格时更改随机单元格的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46039251/