我正在研究一个项目,其中有一个表格视图,其中包含大量具有非常复杂内容的单元格。它通常不会超过两个,但在例外情况下 - 可以说 - 其中有30个。这些复杂单元格中的每一个都包含折线图。我正在使用ios-charts(https://github.com/danielgindi/ios-charts)。如何创建具有复杂内容的UITableViewCell以保持滚动流利
这是视图控制器的内容是什么样子:
我用在的viewController的的cellForRowAtIndexPath方法离队的孔中的代码是那种如下:
var cell = tableView.dequeueReusableCellWithIdentifier("PerfgraphCell", forIndexPath: indexPath) as? UITableViewCell
if cell == nil {
let nib:Array = NSBundle.mainBundle().loadNibNamed("PerfgraphCell", owner: self, options: nil)
cell = nib[0] as? FIBPerfgraphCell
}
cell.setupWithService(serviceObject, andPerfdataDatasourceId: indexPath.row - 1)
return cell!
,并在细胞的代码我有一个方法“setupWithService”,它从现有的对象“serviceObject”中拉取数据源并插入图形的绘图中,如下所示:
func setupWithService(service: ServiceObjectWithDetails, andPerfdataDatasourceId id: Int) {
let dataSource = service.perfdataDatasources[id]
let metadata = service.perfdataMetadataForDatasource(dataSource)
if metadata != nil {
if let lineChartData = service.perfdataDatasourcesLineChartData[dataSource] {
println("starting drawing for \(lineChartData.dataSets[0].yVals.count) values")
chartView.data = lineChartData
}
}
}
现在的问题:取决于在图表中绘制多少个值(在100到2000之间),绘图似乎变得非常复杂。用户注意到当他向下滚动时:只要包含这样一个复杂图表的单元出队,滚动就卡住了一会儿,直到图表初始化。那当然很丑陋!
对于这种情况,是否有意义的是不按需要使单元出列,但是预定义它们并将它们保存在数组中,一旦图形所需的数据被视图控制器接收并将相应的单元拉出这是什么时候需要的数组?或者是否有办法使图表初始化为异步,以便单元立即出现,但图表何时出现“准备就绪”?
感谢您的回复!
谢谢。你的问题推动我走向正确的方向。我仍然不知道如何将图表保存到保存的图像中,但我可能会在此提出另一个问题。 –
不用担心,欢迎您! –