снимок экрана
У меня проблема с круговыми диаграммами, которые не отображаются в пользовательской ячейке таблицы. Ячейки табличного представления добавляются через раскадровку, каждая ячейка содержит небольшое изображение значка, две метки и UIView, который я установил в инспекторе представлений как PieChartView.
Изображение маленького значка и текст в двух метках отображаются нормально, проблем нет. Однако для круговых диаграмм я не получаю сообщения об ошибках, а просто ни одна из диаграмм не отображается. Таблица отображается, заполнена правильными текстами на этикетках, но круговая диаграмма пуста, за исключением среднего отверстия круговой диаграммы. Когда я щелкаю один из них, отображается круговая диаграмма - не совсем корректно (отображается только один из двух секторных кругов, другая часть отсутствует).
Таким образом, событие касания делает срез видимым, но я хочу, чтобы круговая диаграмма была видимой для всех ячеек при запуске ячейки для функции строки.
Я добавил код для контроллера табличного просмотра и ячейки табличного просмотра. Было бы здорово, если бы кто-то мог указать на мою ошибку. Я много исследовал и попробовал, среди прочего, следующие ресурсы переполнения стека: Диаграммы, не отображаемые в tableViewCell iosChart, не отображающий точки LineChartView в UITableViewCell Добавление SubView в UITableViewCell не делает ' Как реализовать iOS-диаграмму в ячейке табличного представления?
На снимке экрана показана ситуация после того, как я щелкнул несколько невидимых круговых диаграмм. Они становятся видимыми, также когда я прокручиваю таблицу вниз, видим еще несколько (не все) круговых диаграмм в случайных ячейках, некоторые нет.
Код для контроллера таблицы просмотра:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "easyAndDiffAllWordsCell", for: indexPath) as! BVBResultsDiffAndEasyAllWordsGraphTableViewCell
let easyVoc = parsedInEasyVocStructures[indexPath.row]
//get the current voc for the writings
let currentVoc = BVBVocabularyManager.getVoc()
cell.label1.text = currentVoc.kanji
cell.label2.text = currentVoc.kanji2
let image = UIImage(named: "plus")
cell.plusMinusImage.image = image
//set the percentages
cell.percentageSolved = arrayOfSuccessPercentagesForPieChart
cell.percentageNotSolved = arrayOfNegativeSuccessPercentagesForPieChart
cell.setChart(forIndexNo:indexPath.row, dataPoints: months, valuesSolved: arrayOfSuccessPercentagesForPieChart, valuedNonSolved: arrayOfNegativeSuccessPercentagesForPieChart)
cell.setNeedsDisplay()
cell.pieChartView.clipsToBounds = true
cell.pieChartView.layer.masksToBounds = true
cell.pieChartView.contentMode = .scaleAspectFit
return cell
}
И для таблицы ViewCell:
class BVBResultsDiffAndEasyAllWordsGraphTableViewCell: UITableViewCell {
@IBOutlet weak var kanjiL: UILabel!
@IBOutlet weak var translationL: UILabel!
@IBOutlet weak var pieChartView: PieChartView!
@IBOutlet weak var plusMinusImage: UIImageView!
var testconditions: Array<String>?
var percentageSolved: Array<Int>?
var percentageNotSolved: Array<Int>?
var solvedPercentageDataEntry = PieChartDataEntry(value: 0)
var nonSolvedPercentageDataEntry = PieChartDataEntry(value: 0)
var percentageSolvedNonSolvedDataEntries = [PieChartDataEntry]()
override func awakeFromNib() {
super.awakeFromNib()
solvedPercentageDataEntry.label = NSLocalizedString("solved", comment: "piechart label for the solved area")
pieChartView.chartDescription?.text = ""
pieChartView.legend.enabled = false
pieChartView.setExtraOffsets(left: 2, top: 0, right: 2, bottom: 0)
pieChartView.holeRadiusPercent = 2.8
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
//not used
}
func setChart(forIndexNo: Int, dataPoints: [String], valuesSolved: [Int], valuedNonSolved: [Int]){
var dataEntries: [PieChartDataEntry] = []
solvedPercentageDataEntry = PieChartDataEntry(value: Double(valuesSolved[forIndexNo]), label: "")
nonSolvedPercentageDataEntry = PieChartDataEntry(value:Double(valuedNonSolved[forIndexNo]), label: "")
dataEntries = [solvedPercentageDataEntry, nonSolvedPercentageDataEntry]
percentageSolvedNonSolvedDataEntries = [solvedPercentageDataEntry, nonSolvedPercentageDataEntry]
let pieChartDataSet = PieChartDataSet(entries: percentageSolvedNonSolvedDataEntries, label: nil)
pieChartDataSet.drawValuesEnabled = false
let pieChartData = PieChartData(dataSet: pieChartDataSet)
let colors = [UIColor.themeColor(), UIColor.red]
pieChartDataSet.colors = colors as! [NSUIColor]
pieChartView.data = pieChartData
pieChartView.notifyDataSetChanged()
}
}