我正在尝试使用核心图在iPhone应用程序中绘制条形图。
我在这里成功遵循了本教程:
并能够渲染条形值。

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

我发现如果我的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;
}

最佳答案

您需要检查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;
}

关于ios - 核心图numberForPlot的取值不会大于1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14721795/

10-13 03:48