1

我使用了核心情节,它工作得很好,但是..现在有问题,我必须在单个情节空间中动态绘制 n 个条形......它可能是 2 或 3 或 5 或非。

我能够创建 Bar 的多个实例 ..但是我在其中动态设置标识符以及如何处理侧面委托中的每个 bar 绘制计算。我的代码片段如下。

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
if([plot.identifier isEqual:kBarIdentifier1])
 {
   //....getting data from array and return .
 }
}
4

1 回答 1

0

您的问题仍然处于较高水平,但我会根据我的理解尝试回答:

  • 我在哪里动态设置标识符:您可以使用一些常量字符串来设置标识符。如果您想让它完全动态,请使用一个计数器并使用它的值设置为标识符,例如:

    plot.identifier = [NSString stringWithFormat:@"%d",counter];
    

    根据动态请求在循环内创建绘图。并在创建实例后根据计数器设置标识符。

  • 如何处理侧面委托中的每个条形绘制计算:这不是很清楚你想知道什么。根据您将在委托方法中传递的计数调用此方法:

      -(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plotnumberOfRecords {
    return someCount;
    }
    

    将根据 someCount 为每个绘图调用委托方法“numberForPlot”。识别绘图并从某个数组中获取值并返回该值。

//编辑:

  -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:     (NSUInteger)index
   {
    if (fieldEnum == CPTBarPlotFieldBarTip) {
     //compare identifiers from a list of identifier maintained
     if ([plot.identifier isEqual:identifier1]) {
        return value;//get value from some array having values for plot identifier1
    }        
    ///and so on for all identifiers

    } 

    if(fieldEnum == CPTScatterPlot)//not sure on enum please check 
     {
         //handle similar to above one
     }
  }
于 2013-07-08T07:12:44.610 回答