2

我第一次尝试使用核心图在 iphone 应用程序中呈现条形图。我在这里成功地遵循了教程:并且能够呈现条形值。

然后我继续更改代码以显示特定于我的应用程序的对象的值(称为“发票”)。发票有一个名为“totalCost”的 NSNumber 值。这就是我想在我的图表上显示的内容。

我发现如果我的总成本值介于 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;
}
4

1 回答 1

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;
}
于 2013-02-07T00:51:42.270 回答