ios - Swift tableview 在编辑一个单元格时更改随机单元格的值

标签 ios swift uitableview

我有很长的文本字段列表,所以我使用的是 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 上的工作方式:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW1

关于ios - Swift tableview 在编辑一个单元格时更改随机单元格的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46039251/

相关文章:

ios - 无法使用物理形状的凹面表示

ios - 如何创建 "Secret"之类的表格 View 动画?

swift - 序列的协议(protocol)所需方法

ios - TableView/Screen 的 AutoLayout UITableViewCell 高度倍数

为 UiTableview 安排多个操作的 iOS 最佳实践

如果位置服务打开,iOS Tableview 滚动滞后

ios - 类型 'UIbutton' 的值不再有 'titleforState'

ios - 在 NSURLSessionData 的实现中未调用委托(delegate)方法

ios - 更新后无法构建我的 iOS 应用程序

uitableview - UITableView 不显示重新排序控件