我首次尝试使用核心情节在iphone应用中渲染条形图。 我成功地遵循了这里的教程: 并能够渲染条形值。
然后我继续更改代码以显示特定于我的应用程序的对象的值(称为“发票”)。 发票具有名为“totalCost”的NSNumber值。这就是我想在我的图表上显示的内容。
我发现如果我的totalCost值介于0和1之间,则条形图将正确显示在图表上。但是,如果我的值大于1,则该栏将完全不显示。 我已尝试浮点数,无符号整数等之间的各种类型转换。我已调试代码并确认invoice.totalCost始终显示正确的NSNumber值。
此外,我的y轴范围目前设置为大约70,因此大于1的值不应超出范围。
以下是代码段:
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex: (NSUInteger)index {
Invoice *invoice = [self.invoices objectAtIndex:index];
return invoice.totalCost;
}
答案 0 :(得分:2)
您需要检查fieldEnum
参数。对于每个数据索引,此方法将至少调用两次,一次针对条形位置,另一次针对条形码值。
-(NSNumber *)numberForPlot:(CPTPlot *)plot
field:(NSUInteger)fieldEnum
recordIndex:(NSUInteger)index
{
NSNumber *num = nil;
switch ( fieldEnum ) {
case CPTBarPlotFieldBarLocation:
num = [NSNumber numberWithUnsignedInteger:index];
break;
case CPTBarPlotFieldBarTip:
num = ((Invoice *)[self.invoices objectAtIndex:index]).totalCost;
break;
}
return num;
}