【问题标题】:How to select a Column series Bar in code如何在代码中选择列系列栏
【发布时间】:2016-06-29 05:09:36
【问题描述】:

我有一个可用的条形图,我可以通过点击它们来选择条形。

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

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

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

另外加分 :) 我需要确保始终选择至少一列。

更新:

我尝试添加以下代码:

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

【问题讨论】:

    标签: ios objective-c shinobi


    【解决方案1】:

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

    我们最近更改了我们的数据点选择 API,该 API 将在我们的下一个版本中推出,以使其更加清晰。

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

    或者如果您想在图表最初绘制时选择一个数据点,您可以设置您在 SChartDatasource 方法“dataPointAtIndex:”中返回的 SChartDataPoint 对象的 selected 属性。

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

    【讨论】:

    • 谢谢你。我将第一个点设置为在 -sChart:dataPointAtIndex:forSeriesAtIndex: 中选择,并且我已经在我的委托中实现了 -sChart:toggledSelectionForPoint:inSeries:atPixelCoordinate: 并迭代了所有数据点,如果没有选择,那么我提取当前数据点从 dataPoints 数组中重新设置选择属性。这为我提供了所需的功能,即始终至少选择一个栏。
    • 有趣的是,只是在委托方法中返回的 dataPoint 上设置 selected 标志没有任何效果。
    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2010-09-16
    • 2018-07-05
    相关资源
    最近更新 更多