2013-12-13 3 views
0

У меня есть две линейки и как я могу делать точки на обеих сериях одновременно? В принципе, моя диаграмма имеет значения 2 y, разделяющие одно и то же значение x, и я представляю их как две серии. Я хочу отображать обе точки, выбранные для заданного значения X.Множественный выбор точек в нескольких сериях в Shinobi

Привет, спасибо за ответ.
я делаю, что в

- (void)sChart:(ShinobiChart *)chart toggledSelectionForPoint:(SChartDataPoint *)dataPoint inSeries:(SChartSeries *)series atPixelCoordinate:(CGPoint)pixelPoint 

    SChartDataPoint* point1Series1 = [chart.datasource sChart:chart dataPointAtIndex:dataPoint.index forSeriesAtIndex:0]; 
    point1Series1.selected = YES; 

    SChartDataPoint* point1Series2 = [chart.datasource sChart:chart dataPointAtIndex:dataPoint.index forSeriesAtIndex:1]; 
    point1Series2.selected = YES; 

При печати выбранного состояния обеих точек после этой строки кода, они возвращают 1 (выбраны), но они, кажется, не появляются, выбранные на графике только один, который я выбрал на диаграмме на устройстве, кажется, отображается как выбранный, хотя я вызываю redrawChart после этого. Любая помощь будет оценен

ответ

2

Я думаю, что это, скорее всего (и я m, потому что я не вижу ваш код), что ваш источник данных диаграммы не возвращает ссылку на datapoint, которая является частью диаграммы, но вместо этого генерирует новый объект datapoint каждый раз, когда вы его запрашиваете.

Для того, чтобы справиться с этим, вы можете запросить точки данных из самой диаграммы, используя свойство dataSeries на SChartSeries объектах.

Следующий способ делегата должен выполнить требуемый выбор.

- (void)sChart:(ShinobiChart *)chart toggledSelectionForPoint:(SChartDataPoint *)dataPoint inSeries:(SChartSeries *)series atPixelCoordinate:(CGPoint)pixelPoint 
{ 
    // Selection details 
    NSInteger dataPointIndex = dataPoint.index; 
    BOOL selected = dataPoint.selected; 

    for (SChartSeries *chartSeries in chart.series) { 
     // If only one data point in the series can be selected at once, then deselect the rest 
     if(!series.togglePointSelection && selected) { 
      for(SChartDataPoint *dp in chartSeries.dataSeries.dataPoints) { 
       dp.selected = NO; 
      } 
     } 
     // Find the data point and perform the selection 
     SChartDataPoint *dp = chartSeries.dataSeries.dataPoints[dataPointIndex]; 
     dp.selected = selected; 
    } 
} 

Надеюсь, что это поможет.

+0

Я только что получил эту работу в пятницу точно так же, как здесь. Спасибо Сэмми. –

0

Вы должны быть в состоянии установить .selected на точках данных и настроить свойства series.style.selectedPointStyle для отображения точек, как вы хотите :)

+0

Пожалуйста, обратитесь к моему оригинальному вопросу. Я отредактировал вопрос, чтобы дать вам больше контекста. –