Core Plot numberForPlot不会取大于1的值

时间:2013-02-06 04:49:17

标签: ios objective-c core-plot

我首次尝试使用核心情节在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;
}

1 个答案:

答案 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;
}