我有一个iOS应用程序显示一个CPTBarPlot。我的条形图是通过改变触条的颜色来响应触摸的。为此,我跟踪barWasSelectedAtRecordIndex中最后一个选定栏的索引,然后在barFillForBarPlot中设置选定条的颜色,使其与其他颜色不同。这很好,但似乎每次选中的条形发生变化时,我都必须调用reloadData,以使新的填充颜色生效。这需要太长时间,因为有大量的数据,使应用程序感到迟钝。
仅仅为了改变一个条形的颜色而不得不重新加载所有数据似乎是浪费的,所以我希望有一个更好的方法,或者我只是在做一些愚蠢的事情。
以下是相关代码的简化版本:
-(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)idx
{
self.selectedIndex = idx
// Do I have to do this??
[self reloadData];
}
-(CPTFill *)barFillForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSUInteger)index
{
CPTFill *barFill = nil;
if (index == self.selectedIndex)
{
barFill = [CPTFill fillWithColor:redColor];
}
else
{
barFill = [CPTFill fillWithColor:blueColor];
}
return barFill;
}发布于 2014-02-19 00:59:13
是。该绘图缓存它从数据源加载的所有内容,包括栏填充。您需要打电话给-reloadData,告诉它可以加载新的信息。
https://stackoverflow.com/questions/21865881
复制相似问题