如何正确更新 UITableViewCell 的内容?

How can the content of a UITableViewCell be updated properly?

我有一个 TableView 其单元格内容需要在 TableViewRowAction 执行时更新。更准确地说,我想更新单元格内的 UILabel 。在操作内为该标签设置新文本没有问题,但是当滚动 down/up 并重新加载单元格时,单元格内的该标签与更改之前的文本相同。

我知道单元格会被重复使用,这就是为什么我想知道如何 "avoid" 这种效果以及如何正确更新单元格的内容。我已经尝试调用 TableView.ReloadData(),这似乎解决了问题,但单元格以完全不同的顺序出现,看起来不太好。

最直接的方法是更新您的 UITableView 从中提取的数据(即,您从中填充每个单元格的数据数组已更新以反映您的文本更改),然后重新加载UITableView的特定单元格:

let indexPath = IndexPath(row: 0, section: 0)
tableView.reloadRows(at: [indexPath], with: .automatic)

为此,您必须创建一个数组作为标签的数据源。当您更改特定标签的文本时,您必须更新数组。您可以从方法 cellForRowAt 的 属性 indexPath 中获取确切的更新位置。每次上下滚动时,都会调用 cellForRowAt 方法。只需使用

之类的东西
label.text = array[indexPath.row]

正如您所说 table 单元格被重复使用,这意味着您必须为整个 table 保留一个模型数组并对其进行所有更改,然后重新加载 table更重要的是在cellForRowAt

中设置单元格索引的内容