核心图:从CPTPlot获取CPTBarPlots

时间:2014-11-12 22:57:26

标签: ios objective-c graph core-plot

我正在尝试创建一个图表视图,其中注释始终附加到显示图表值的末尾。它会随着滑块的移动而实时更新,并且随着图形值的变化,注释文本也会发生变化。

我把一小段代码放在一起,让它运行良好。然而,这包括按下杆并处理该按钮:

- (void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)idx;

这让我可以抓住CPTBarPlot并对此进行检查。当图形加载并无限期地保留在那里时,我希望注释存在。因此使用上述方法是不可行的。

这是我的numberForPlot方法,其中我正在调用一个方法来处理注释的更新。

- (NSNumber *)numberForPlot:(CPTPlot *)绘图字段:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index {

double ageNew = self.sliderOne.value - [self.budgetObject.larcNum doubleValue];

self.budgeObject = [self.budgetImpactFormula calculateBudgetImpactData:ageNew andOrganisation:self.organisationObject];

BudgetGraphObject *graphObject = [self getGraphScale];

if ((fieldEnum == CPTBarPlotFieldBarTip) && (index < 2)) {
    if ([plot.identifier isEqual:@"UIPCurrent"]) {

        return graphObject.uipCur;
    }
    else if ([plot.identifier isEqual:@"UIPProjected"]) {

        [self addAnnotationToBar:plot value:[graphObject.uipProj doubleValue] atIndex:index];
        return graphObject.uipProj;
    }

在此代码中,我调用的是方法addAnnotationToBar: value: atIndex:。然而,应用程序崩溃了,我意识到这是因为我传入的是CPTPlot而不是CPTBarPlot。导致应用崩溃的行是:[plot.graph.plotAreaFrame.plotArea addAnnotation:self.uipProjectedAnnotation];

经过进一步调查后,这似乎是我处理注释更新的最佳位置。无论如何,我可以从CPTPlot获取CPTBarPlots吗?

我使用调试器来查找以下内容:

enter image description here

但是,我无法访问此阵列。

如何在CPTPlot中获取CPTBarPlots的任何帮助将不胜感激。

非常感谢。

1 个答案:

答案 0 :(得分:0)

不要在数据源中这样做。在设置图形时将注释添加到图中。如果绘图数据发生变化,您可以稍后更新它们。