#swift #highcharts
#swift #графики
Вопрос:
Я пытаюсь найти способ программно выделить или выбрать точку данных на графике HighCharts.
До сих пор я не понял, как извлечь HIPoint из серии, а тем более выбрать эту точку. Кроме того, если есть способ заставить всплывающую подсказку отображаться программно, а не просто выбирать точку данных, это было бы еще лучше.
Я нашел много примеров того, как это сделать в JavaScript, но метод series[i].data[i].select() не работает в Swift, потому что данные [Любые], и вы можете установить select только в HIPoint.
options.series[0].data[3].select() // не работает (options.series[0].data[3] как! HIPoint).select() // сбой, потому что Any не может быть преобразован в HIPoint
Следует выбрать точку данных в серии [0], точку [3] или вызвать всплывающую подсказку, но я не могу понять, как получить доступ к HIPoint, чтобы вообще что-либо с ней делать.
Комментарии:
1. Привет @D. Пратт, я не знаю
swift
кода, но обычно вы можете установитьselected
свойство для объекта точки данных. Если вы хотите использовать какой-либо точечный метод, вам необходимо использовать ссылку на точку на диаграмме. Живой пример: jsfiddle.net/BlackLabel/5Lw1gc2u2. Это проблема с Swift SDK; похоже, что нет прямого способа получить доступ к HIPoint (который я нашел до сих пор). Я могу перейти к серии (которая находится в chart.options.series, но у series нет массива точек, который позволил бы мне установить selected() на нем.
3. Не решение опубликованного вопроса, но эффективная работа, которую я нашел до сих пор, заключается в использовании HIAnnotations вместо того, чтобы пытаться получить точки для выбора. Я могу получить значения координат из данных и опубликовать аннотацию при выборе ячейки tableview, что в конечном итоге делает практически то, что я хочу, в любом случае.
Ответ №1:
Вы можете добавить HIPoint
объект класса к данным:
let options = HIOptions()
let chart = HIChart()
chart.type = "line"
options.chart = chart
let title = HITitle()
title.text = "Demo chart"
options.title = title
let line = HILine()
let point = HIPoint()
point.y = 71.5
line.data = [29.9, point, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
options.series = [line]
И обратитесь к точке таким образом:
let point = self.chartView.options.series[0].data[1] as! HIPoint
point.select()
Комментарии:
1. Отлично, спасибо! Добавление данных в виде точек было тем, чего мне не хватало!