Swift Charts удалить данные - PullRequest
       9

Swift Charts удалить данные

0 голосов
/ 05 сентября 2018

Я использую is- Charts, в UIView у меня есть кнопки (1,2,3,4) и UIView с графиками

Я хочу, если кнопка 1 нажата - удалить старую строку данных и показать новую с новыми данными ^, а если нажать кнопку 2, то аналогично перезагрузить

func populateData(withCount countA: [Double], countB: [Double]) {
  for index in 0..<countB.count{
            let dataEntry = ChartDataEntry(x: countB[index], y: countA[index])
            values.append(dataEntry)
        }
 let set = LineChartDataSet(values: values, label: "")
        set.mode = .cubicBezier
        set.cubicIntensity = 0.2
        set.drawCirclesEnabled = true
        set.lineWidth = 2.7
        set.circleRadius = 2.8
        set.setCircleColor(.green)
        set.setColor(#colorLiteral(red: 0.3176470588, green: 0.9960784314, blue: 0.6549019608, alpha: 1))
        set.fillColor = .green
        set.fillAlpha = 1.0
        set.drawHorizontalHighlightIndicatorEnabled = false
        set.drawVerticalHighlightIndicatorEnabled = false
         let gradientColors = [UIColor.cyan.cgColor, UIColor.clear.cgColor] as CFArray 
        let colorLocations:[CGFloat] = [1.0, 0.0] 
        let gradient = CGGradient.init(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors: gradientColors, locations: colorLocations
        set.fill = Fill.fillWithLinearGradient(gradient!, angle: 90.0) 
        set.drawFilledEnabled = true 


        let data = LineChartData(dataSet: set)
        data.setDrawValues(false)
        chartView.data = data
    }

В viewDidLoad я загружаю данные с кнопки1:

    let a: [Double] = [2.530, 2.014, 2.625, 1.898, 0.556, 2.3767, 2.554, 2.6676, 1.8777, 2.098, 2.567, 3.0, 3.5, 3.7, 3.2]
    let b: [Double] = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0]

    let c: [Double] = [1.530, 3.014, 0.625, 3.898, 2.556, 3.3767, 1.554, 1.6676, 3.8777, 1.098, 3.567, 2.0, 2.5, 1.7, 2.2]
    let d: [Double] = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0]

        override func viewDidLoad() {
        super.viewDidLoad()
        populateData(withCount: a, countB: b)
        }

В кнопке1:

 chartView.clear()
 populateData(withCount: a, countB: b)

В кнопке2:

chartView.clear()
 populateData(withCount: c, countB: d)

Но это не работает, данные не меняются, только добавить и показать 2 строки

Как я могу удалить и поместить новые данные?

1 Ответ

0 голосов
/ 05 сентября 2018

Перед populateData сделайте это:

values = []

Кстати, я бы написал так:

func populateData(withCount countA: [Double], countB: [Double]) {
  values = []
  for index in 0..<countB.count{
      let dataEntry = ChartDataEntry(x: countB[index], y: countA[index])
      values.append(dataEntry)
        }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...