gpt4 book ai didi

ios - 表格单元格仅在我选择时更新

转载 作者:行者123 更新时间:2023-11-28 06:00:45 24 4
gpt4 key购买 nike

我正在制作一个使用表格的 iOS 应用程序,每个单元格包含两个标签和一个我制作的名为 ColourCircle 的自定义 View 。 ColourCircle 有一个名为 fill: UIColor 的属性,我已经覆盖了 draw(_ rect: CGRect) 函数来绘制该颜色的圆.

单元格的数据从数组加载:data: [(String, Double)],使用 View Controller 作为 UITableViewDelegateUITableViewDataSource

viewWillAppear 中我写了:

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()

并且,在 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 中我写了:

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

当我运行我的应用程序时,可见单元格(即屏幕上的单元格)工作正常,ColourCircle View 显示正确的颜色。当我向下滚动时,新单元格出现在 View 中,新单元格没有正确的颜色,而是按顺序使用之前加载的单元格的颜色。

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

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

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

编辑:这是我的 ArtistCell 类的代码:

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

最佳答案

根据这个:let cell = table.dequeueReusableCell(withIdentifier: "artist cell") 作为! ArtistCell - 所有单元格都是可重复使用的。使用 prepareForReuse() 方法,准备要重用的单元格并清理它们的内容。

关于ios - 表格单元格仅在我选择时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com