круговые диаграммы (диаграммы iOS) не отображаются в пользовательской ячейке таблицы - PullRequest
0 голосов
/ 10 ноября 2019

снимок экрана

У меня проблема с круговыми диаграммами, которые не отображаются в пользовательской ячейке таблицы. Ячейки табличного представления добавляются через раскадровку, каждая ячейка содержит небольшое изображение значка, две метки и 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()
    }

}

1 Ответ

0 голосов
/ 11 ноября 2019

Я проверяю твой код. Работает нормально. И среднее отверстие, возможно, это проблема конфигурации. Попробуйте добавить это

    pieChartDataSet.drawIconsEnabled = false
    pieChartDataSet.sliceSpace = 1
    pieChartDataSet.highlightColor = UIColor.white
    pieChartDataSet.entryLabelColor = UIColor.white
    pieChartDataSet.selectionShift = 0

    pieChartView.holeRadiusPercent = 0.5
    pieChartView.transparentCircleRadiusPercent = 0.0

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...