Shinobi中多个系列的多点选择

时间:2013-12-13 16:36:47

标签: shinobi

我有两个系列,如何同时选择两个系列?基本上,我的图表有2 y值共享相同的x值,我将它们表示为两个系列。我想显示为给定X值选择的两个点。

您好,谢谢您的回复。我在

中这样做
- (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 个答案:

答案 0 :(得分:2)

我认为可能(我猜是因为我看不到你的代码)你的图表数据源没有返回对作为图表一部分的数据点的引用,而是生成一个新的数据点每次请求一个对象。

为了解决这个问题,您可以通过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;
    }
}

希望有所帮助。

答案 1 :(得分:0)

您应该能够在数据点上设置.selected并自定义series.style.selectedPointStyle属性以显示您想要的点:)