如何在代码中 select 一个 Column series Bar

How to select a Column series Bar in code

我有一个条形图,我可以通过点击它们来 select 个条形图。

在我的 ShinobiChart 数据源的 -sChart:seriesAtIndex: 中,我实现了:

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

效果很好。我现在想做的是能够 select 基于其背后数据索引的特定柱。你怎么做到这一点?我查看了图表和系列,但找不到 select 列的任何方法。

另外加分 :) 我需要确保至少有一列总是 selected.

更新:

我尝试添加以下代码:

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,然后在数据源中设置了 selected。这是有效的。

免责声明我是 ShinobiControls 的开发人员。

我们最近更改了我们的数据点 selection API,这将在我们的下一个版本中出现,以使这一点更清楚。

目前,您必须通过 "dataSeries.dataPoints" 数组遍历系列的数据点。然后将您从数组中提取的点从类型 id 转换为 SChartDataPoint 并在该点上设置 selected 属性。

或者,如果您想在图表最初绘制时 select 一个数据点,您可以只设置 selected 属性 您 return 的 SChartDataPoint 对象在 SChartDatasource 方法中 "dataPointAtIndex:".

要确保一次只 selected 一个点,您可以将 "togglePointSelection" BOOL 属性 设置为 NO。将此 属性 设置为 YES 意味着您可以一次 select 多个点。