我正在尝试使我的图表中的列可选,并在单击时显示所选列的更多详细信息。每列都由一个系列表示(您将在一秒钟内理解)。
这就是我构建每个系列的方式:
-(SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(int)index {
SChartColumnSeries *series = [SChartColumnSeries new];
series.style.showAreaWithGradient = NO;
series.stackIndex = [NSNumber numberWithInt:0];
series.selectedStyle.showAreaWithGradient = NO;
CHART_COLOR_TYPE dataType = [TestGraphDataManager getDataType:index];
series.style.areaColor = (dataType == ACCOUNT)?
[UIColor colorWithRed:227.0f/255.0f green:179.0f/255.0f blue:0.0f/255.0f alpha:0.5f]:
[UIColor colorWithRed:0.0f/255.0f green:172.0f/255.0f blue:235.0f/255.0f alpha:0.5f];
series.selectedStyle.areaColor = [UIColor colorWithRed:129.0f/255.0f green:0.0f/255.0f blue:82.0f/255.0f alpha:0.5f];
series.selectionMode = SChartSelectionSeries;
series.style.lineColor = [UIColor clearColor];
series.selectedStyle.lineColor = [UIColor clearColor];
return series;
}
我目前遇到的问题是只有第一个系列是可选择的。另外我用不同系列表示每个条形图,这样我就可以用series.selectionMode = SChartSelectionSeries
轻松切换颜色
最后我有这个委托事件,以便我可以加载额外的数据,但它也只为第一个系列调用
- (void)sChart:(ShinobiChart *)chart toggledSelectionForSeries:(SChartSeries *)series nearPoint:(SChartDataPoint *)dataPoint atPixelCoordinate:(CGPoint)pixelPoint{
NSLog(@"click event called");
//Display data
}
有谁知道为什么会这样?这一直让我疯狂。
先谢谢你的帮助。
修改
我找到了主要的问题,因为我做了series.stackIndex = [NSNumber numberWithInt:0];
它使得所有的条形图具有相同的名称堆栈(名称的名称在我的观点中重复它不是问题),我这样做是为了让所有的条形都是与刻度线标记相同的距离,以便条形不是很尖。但我相信shinobi为这些价值观放置了隐形条,它们在另一个上面,只有第一个系列才可以选择,因为它超过了其他。如果我删除该行图形看起来很可怕但所有都是可点击的。
如何绕过这个或避免这个问题?
它应该如何显示(使用堆叠索引),但它会破坏点击事件:
没有堆叠索引所有条形都是可点击的,但它看起来不太好,而且越多,我只有4个条形条:
答案 0 :(得分:1)
从Shinobi身边抢劫 - 感谢您的联系!
这可以通过使用子类来解决,并为列偏移返回零,如下所示:
@interface MyColumnSeries : SChartColumnSeries
@end
@implementation MyColumnSeries
- (double) offsetOfStackInChart:(ShinobiChart *)chart forDatapointIndex:(const int)pointIndex withPointSelector:(SEL)pointSelector
{
return 0.0;
}
@end