2016-06-29 5 views
0

У меня есть диаграмма диаграммы, и я могу выбрать полосы, нажав на них.Как выбрать строку столбцов Bar в коде

В -sChart:seriesAtIndex: моего ShinobiChart источника данных я реализовал:

SChartColumnSeries *series = [[SChartColumnSeries alloc] init]; 
series.detectTapsOutsideBar = YES; 
series.selectionMode = SChartSelectionPoint; 

Который работает хорошо. Теперь я хочу выбрать конкретную панель, основанную на индексе данных позади нее. Как ты делаешь это? Я просмотрел диаграмму, серию, но не могу найти какой-либо метод для выбора столбца.

Также для дополнительных точек :) Мне нужно обеспечить, чтобы всегда выбирался хотя бы один столбец.

UPDATE:

Я попытался добавить следующий код:

for (int index = 0; index < self.chartView.series[0].dataSeries.dataPoints.count; index++) 
{ 
    SChartDataPoint *point = (SChartDataPoint *)self.chartView.series[0].dataSeries.dataPoints[index]; 
    if (lapIndex == index) 
    { 
     point.selected = YES; 
    } 
    else 
    { 
     point.selected = NO; 
    } 
} 

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

В конце концов я удалил этот код и назвал -reloadData и -redrawChart на диаграмме, а затем задал выбранный в источнике данных. Это работает.

ответ

1

ОТКАЗ Я являюсь разработчиком на ShinobiControls.

Мы недавно изменили наш API выбора точек ввода данных, который должен появиться в нашей следующей версии, чтобы сделать это более понятным.

В настоящее время вам необходимо пройти через точки данных вашей серии через массив dataSeries.dataPoints. Затем отбросьте точку, которую вы вытащили из массива с идентификатора типа в SChartDataPoint и установите выбранное свойство в этой точке.

Или, если вы хотите выбрать точку данных, когда ваша диаграмма изначально рисует, вы можете просто установить выбранное свойство объекта SChartDataPoint, которое вы возвращаете в методе SChartDatasource «dataPointAtIndex:».

Чтобы убедиться, что выбрано только одно очко, вы можете установить для свойства BOOL "togglePointSelection" значение NO. Установка этого свойства в YES означает, что вы можете выбрать более одной точки за раз.

+0

Благодарим вас за это. Я устанавливаю первую точку для выбора в -sChart: dataPointAtIndex: forSeriesAtIndex: и я реализовал -sChart: toggledSelectionForPoint: inSeries: atPixelCoordinate: в моем делетете и повторил все точки данных, если их не выбрано, я извлекаю текущую точку данных из массива dataPoints и повторно установите свойство выбора. Это дало мне необходимую мне функциональность, т. Е. Всегда выбирается хотя бы один бар. – Ants

+0

Интересно, что просто установление выбранного флага в dataPoint, возвращаемом в методе делегата, не повлияло. – Ants