我正在尝试创建一个图表视图,其中注释始终附加到显示图表值的末尾。它会随着滑块的移动而实时更新,并且随着图形值的变化,注释文本也会发生变化。
我把一小段代码放在一起,让它运行良好。然而,这包括按下杆并处理该按钮:
- (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吗?
我使用调试器来查找以下内容:
但是,我无法访问此阵列。
如何在CPTPlot中获取CPTBarPlots的任何帮助将不胜感激。
非常感谢。
答案 0 :(得分:0)
不要在数据源中这样做。在设置图形时将注释添加到图中。如果绘图数据发生变化,您可以稍后更新它们。