我正在尝试使用核心图在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/