Я использую линейную диаграмму из iOS-диаграмм в пользовательской ячейке таблицы, которая расширяется прикосновением. Я не загружаю диаграммы в cellForRow: так как это загружает все диаграммы во всех ячейках и убивает прокрутку производительности, поэтому я загружаю его в didSelectRow :. Проблема в том, что по какой-то причине диаграмма не загружается при первом обращении пользователя к ячейке, и я понятия не имею, почему. Кроме того, кажется, что анимация диаграммы начинается, когда развернутая ячейка (которая в настоящее время показывает диаграмму) рушится.Как сбросить анимацию iOS-диаграмм в ячейке tableview
Вот мой didSelectRow: и ниже - диаграмма func в моей пользовательской ячейке. Я боролся с этим, любое понимание было бы высоко оценено!
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell:CandDetailTableViewCell = tableView.cellForRowAtIndexPath(indexPath) as! CandDetailTableViewCell
// CALLS METHOD TO BUILD CHART WITH DATA I SAVED IN THESE ARRAYS
cell.setChart(dataForMonths, values: dataForRatings)
let previousIndexPath = selectedIndexPath
if indexPath == selectedIndexPath {
// if user taps cell that was already selected so it collapses
selectedIndexPath = nil
} else {
// when user selects new cell
selectedIndexPath = indexPath
}
var indexPaths:Array <NSIndexPath> = []
if let previous = previousIndexPath {
indexPaths += [previous]
}
if let current = selectedIndexPath {
indexPaths += [current]
}
if indexPaths.count > 0 {
tableView.reloadRowsAtIndexPaths(indexPaths, withRowAnimation: .Automatic)
}
tableView.scrollRectToVisible(tableView.rectForRowAtIndexPath(indexPath), animated: true)
}
Вот диаграмма FUNC в Tableview клетки:
func setChart(dataPoints: [String], values: [Double]) {
var dataEntries: [ChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry = ChartDataEntry(value: values[i], xIndex: i)
dataEntries.append(dataEntry)
}
let lineChartDataSet = LineChartDataSet(yVals: dataEntries, label: "Rating")
let lineChartData = LineChartData(xVals: dataPoints, dataSet: lineChartDataSet)
analyticsView.data = lineChartData
analyticsView.xAxis.labelPosition = .Bottom
analyticsView.backgroundColor = UIColor.whiteColor()
analyticsView.userInteractionEnabled = false
analyticsView.drawGridBackgroundEnabled = false
analyticsView.drawBordersEnabled = false
analyticsView.leftAxis.enabled = false
analyticsView.rightAxis.enabled = false
analyticsView.xAxis.gridLineWidth = 0.0
analyticsView.xAxis.axisLineColor = UIColor.clearColor()
analyticsView.legend.enabled = false
// Removes the description text off the chart
analyticsView.descriptionText = ""
analyticsView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)
}
Я изменил 'analyticsView.data = lineChartData 'быть в конце после того, как он настроит представление диаграммы; он по-прежнему работает одинаково. Я добавляю представление диаграммы, когда я вызываю 'cell.setChart (dataForMonths, values: dataForRatings)' in didSelectRow: и отображение в UIView в моей ячейке. – tahoecoop
, тогда вы должны начать отладку при вызове drawRect – Wingzero