作者:TzXh爱是生活 | 来源:互联网 | 2022-12-20 17:52
我刚刚在tableview中实现了库图表(https://github.com/danielgindi/Charts),但是当我的图表包含大量数据时,我在滚动期间遇到了相当大的延迟.
我在ChartTableViewCell中有一个方法,我根据传递的数据绘制图表,并从我的viewcontroller调用.
func updateCell(chartData: ChartData) {
DispatchQueue.global(qos: .background).async {
print("This is run on the background queue")
self.readings = (readings != nil) ? readings!.readings : []
self.period = period
if (chartData.isKind(of: LineChartData.self)) {
data.lineData = chartData as! LineChartData
}
else if (chartData.isKind(of: BarChartData.self)) {
data.barData = chartData as! BarChartData
}
}
DispatchQueue.main.async {
self.chartView.data = data
}
}
在我的tableViewController中,我在解析数据后调用该函数:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let meta = chartMetas[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "chartCell", for: indexPath) as! ChartTableViewCell
cell.readings = currentReadings
cell.updateCell()
return cell
}
我错过了什么?由于视图在滚动时非常困难.
更新:
我按照建议尝试在viewcontroller中准备图表数据并将其传递给单元格.然而,似乎是可重复使用的单元格中的问题,当我滚动并且新单元格进入屏幕时出现滞后.我怎样才能解决这个问题?这很烦人.
更新2:看起来图表不应该在tableview中使用...
https://github.com/danielgindi/Charts/issues/3395