.noDataText не обновляется в диаграмме. Swift 2

Я использую библиотеку диаграмм (danielgindi / Charts).

У меня есть сегмент, в котором отображаются параметры дня, недели, месяца и года. В зависимости от того, что выбрано, будет отображаться на диаграмме.

У меня такой код:

var highestValue : Double = 0.0
@IBAction func segmentChanged(sender: AnyObject) {
    switch durationSegment.selectedSegmentIndex
    {
    case 0:
        segmentSelected = "Day"
        highestValue = 8.0
    case 1:
        segmentSelected = "Week"
        highestValue = 10.0
    case 2:
        segmentSelected = "Month"
        highestValue = 12.0
    case 3:
        segmentSelected = "Year"
        highestValue = 14.0
    default:
        break;
    }

    print("segment selected = \(segmentSelected)")
    displayDurationLabel(segmentSelected, providedStartDate : NSDate())

}


 func setChart(xValues: [String], valuesCandleChart: [Double], durationToBeDisplayed: String) {
    chartView.descriptionText = ""
    print("within setChart, durationToBeDisplayed = \(durationToBeDisplayed)")
    chartView.noDataText = "No spends logged for \(durationToBeDisplayed)" 
chartView.leftAxis.customAxisMax = highestValue
}

Когда ViewController вызывается изначально, он использует segmentSelected = "Month", и диаграмма отображает правильное сообщение, однако, когда я меняю сегмент, например «День», печать показывает правильный результат, однако '.noDataText' не обновляется должным образом.

Любая помощь будет оценена :)


person Jess Murray    schedule 07.04.2016    source источник


Ответы (2)


вызов candleChartView.setNeedsDisplay() перерисует диаграмму и обновит текст

person Wingzero    schedule 08.04.2016
comment
Я вызвал это в конце моей функции setChart, но она работает не так, как ожидалось. Он также не обновляет customAxisMax. Кажется, что это 1 щелчок по сегменту позади, например. когда я нажимаю день, а затем неделю, он отображается как 8.0, затем, когда я возвращаюсь к дню, он меняется на 10.0 - person Jess Murray; 08.04.2016

  • В функции setChart в конце вызова:

chartView.notifyDataSetChanged ()

  • Сразу после вызова функции setChart:

chartView.legend.resetCustom ()

person Jess Murray    schedule 08.04.2016