Ios 表格单元格仅在我选择它时更新

Ios 表格单元格仅在我选择它时更新,ios,swift,uitableview,Ios,Swift,Uitableview,我正在制作一个iOS应用程序,它使用一个表格,每个单元格包含两个标签和一个自定义视图,我制作了一个名为colorCirclecolorcycle有一个名为fill:UIColor的属性,我已经重写了draw(rect:CGRect)函数来绘制该颜色的圆 单元格的数据从数组加载:data:[(字符串,双精度)],使用视图控制器作为UITableViewDelegate和UITableViewDataSource 在视图中将出现我写了: guard let fetchedData = getArti

我正在制作一个iOS应用程序,它使用一个表格,每个单元格包含两个标签和一个自定义视图,我制作了一个名为
colorCircle
colorcycle
有一个名为
fill:UIColor
的属性,我已经重写了
draw(rect:CGRect)
函数来绘制该颜色的圆

单元格的数据从数组加载:
data:[(字符串,双精度)]
,使用视图控制器作为
UITableViewDelegate
UITableViewDataSource

视图中将出现
我写了:

guard let fetchedData = getArtistData() else {
    performSegue(withIdentifier: "data-error", sender: nil)
    return
}

chart.load(data: fetchedData)
data = fetchedData
table.reloadData()
table.setNeedsLayout()

table.isHidden = false
chart.isHidden = false
activityIndicator.stopAnimating()
let cell = table.dequeueReusableCell(withIdentifier: "artist cell") as! ArtistCell
let name = data[indexPath.row].0

if let proportion = chart.getPercentage(of: name) {
    let percentage = proportion * 100
    cell.name.text = name
    cell.percentage.text = "\(round(percentage * 10) / 10)%" // rounded to 2 d.p.
    cell.colour.fill = chart.colour(for: name)!
}

return cell
tableView(\utableview:UITableView,cellForRowAt indexath:indexPath)中,
我写了:

guard let fetchedData = getArtistData() else {
    performSegue(withIdentifier: "data-error", sender: nil)
    return
}

chart.load(data: fetchedData)
data = fetchedData
table.reloadData()
table.setNeedsLayout()

table.isHidden = false
chart.isHidden = false
activityIndicator.stopAnimating()
let cell = table.dequeueReusableCell(withIdentifier: "artist cell") as! ArtistCell
let name = data[indexPath.row].0

if let proportion = chart.getPercentage(of: name) {
    let percentage = proportion * 100
    cell.name.text = name
    cell.percentage.text = "\(round(percentage * 10) / 10)%" // rounded to 2 d.p.
    cell.colour.fill = chart.colour(for: name)!
}

return cell
当我运行应用程序时,可见单元格(即屏幕上的单元格)工作正常,
colorCircle
视图显示正确的颜色。当我向下滚动,看到新的单元格时,新的单元格没有正确的颜色,而是按顺序使用以前加载的单元格的颜色

例如,假设表格中的前两个单元格是红色和蓝色,那么当我向下滚动时加载的前两个单元格也将是红色和蓝色,按顺序排列。当我向上滚动,重新加载之前的单元格时,也会发生同样的情况

但是,当我选择这些单元格时,它们会变为正确的颜色。然后,当再次卸载和加载时,它们将保持正确的颜色,除非我将其中一个单元格进一步固定(通过选择它们),在这种情况下,它们将更改为我固定的单元格的颜色

这似乎与细胞的再利用有关,尽管我不太清楚如何修复它

编辑:以下是我的
ArtistCell
课程的代码:

class ArtistCell: UITableViewCell {
    @IBOutlet weak var colour: ColourCircle!
    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var percentage: UILabel!
}

根据这一点:
let cell=table.dequeueReusableCell(带标识符:“艺术家单元”)为!ArtistCell
-所有单元格均可重复使用。使用prepareForReuse()方法,准备单元格以重用和清理它们的内容。

不确定是否正确,但我将
cell.prepareForReuse()添加到了
let cell=…
下面,我仍然遇到同样的问题。您需要在cell的类中实现此方法,并删除可更改的内容。有关更多详细信息,请添加cell类的一些代码。我将其添加到questionimplement中,准备重用,清除当前颜色并添加新的