UITableViewCell的内容如何正确更新?

时间:2018-07-03 20:39:38

标签: ios swift uitableview uitableviewrowaction

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

我知道单元格将被重用,这就是为什么我想知道如何“避免”这种影响以及如何正确更新单元格内容的原因。我已经尝试调用TableView.ReloadData()来解决问题,但是单元格以完全不同的顺序出现,看起来不太好。

3 个答案:

答案 0 :(得分:1)

正如您所说的,表单元格已被重用,这意味着您必须为整个表保留一个模型数组并对其进行所有更改,然后更重要地重新加载表以设置{{1中的单元格索引的内容。 }}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

label.text = array[indexPath.row]