我正在研究一個項目,其中有一個表格視圖,其中包含大量具有非常複雜內容的單元格。它通常不會超過兩個,但在例外情況下 - 可以說 - 其中有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之間),繪圖似乎變得非常複雜。用戶注意到當他向下滾動時:只要包含這樣一個複雜圖表的單元出隊,滾動就卡住了一會兒,直到圖表初始化。那當然很醜陋!
對於這種情況,是否有意義的是不按需要使單元出列,但是預定義它們並將它們保存在數組中,一旦圖形所需的數據被視圖控制器接收並將相應的單元拉出這是什麼時候需要的數組?或者是否有辦法使圖表初始化爲異步,以便單元立即出現,但圖表何時出現「準備就緒」?
感謝您的回覆!
謝謝。你的問題推動我走向正確的方向。我仍然不知道如何將圖表保存到保存的圖像中,但我可能會在此提出另一個問題。 –
不用擔心,歡迎您! –