2011-12-26 46 views
1

我正在使用Core-Plot库在iPhone中绘制条形图。我正在使用CPTTestApp-iPhone进行训练。在我的项目中,该栏看起来很像那个样例项目。但是,我不在哪里我需要给值绘制酒吧。然后,在我的实际项目中,我需要动态更改条形值。我怎样才能做到这一点?请帮我找出解决方案。提前致谢。在示例数据源代码下方,如何在Core-Plot iphone中动态地将值更改为BarChart?

#pragma mark - 
#pragma mark Plot Data Source Methods 

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot 
{ 
    return 10; 
} 

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{ 
    NSDecimalNumber *num = nil; 
    if ([plot isKindOfClass:[CPTBarPlot class]]) 
    { 
     switch (fieldEnum) 
     { 
      case CPTBarPlotFieldBarLocation: 
       num = (NSDecimalNumber *)[NSDecimalNumber numberWithUnsignedInteger:index]; 
       break; 
      case CPTBarPlotFieldBarTip: 
       num = (NSDecimalNumber *)[NSDecimalNumber numberWithUnsignedInteger:(index+1)*(index+1)]; 
       if ([plot.identifier isEqual:@"Bar Plot 2"]) 
        num = [num decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithString:@"10"]];//10 
       break; 
     } 
    } 

    return num; 
} 

-(CPTFill *) barFillForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSNumber *)index; 
{ 
    return nil; 
} 

如何增加coreplot iPhone中的长度?谢谢。

回答

3

核心绘图图将在首次显示时从数据源请求其数据。你可以迫使它在几个方面来加载新的数据:

  1. 呼叫-reloadData图上的重新加载的所有地块。
  2. 在图上调用-reloadData以重新载入仅用于该图的所有数据。
  3. 在图上调用-reloadDataInIndexRange:以重新加载一系列数据索引而不更改数据点的总数。
  4. 拨打-insertDataAtIndex:numberOfRecords:在给定索引处插入新数据。更高指数的任何数据将被移至腾出空间。只有新数据将从数据源请求。

您也可以通过使用-deleteDataInIndexRange:方法重新加载任何内容来删除图中的数据。

顾名思义,-numberOfRecordsForPlot:方法会告诉绘图将绘制多少个数据点。将调用-numberForPlot:field:recordIndex:方法来加载实际数据值。它被称为每个字段(位置和提示)和数据索引的组合。