Выбор точки программно (например, из ячейки просмотра таблицы или кнопки)

#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/5Lw1gc2u

2. Это проблема с 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. Отлично, спасибо! Добавление данных в виде точек было тем, чего мне не хватало!