2

コア プロットを使用して iPhone アプリで棒グラフをレンダリングしようとしています。ここのチュートリアルに成功しました: バーの値をレンダリングすることができました。

次に、アプリに固有のオブジェクト (「請求書」と呼ばれる) の値を表示するようにコードを変更しました。請求書には「totalCost」と呼ばれる NSNumber 値があります。これが私のグラフに表示したいものです。

totalCost の値が 0 から 1 の場合、バーがグラフに正しく表示されることがわかりました。ただし、値が 1 より大きい場合、バーはまったく表示されません。float、unsigned int などの間であらゆる種類の型変換を試みました。コードをデバッグし、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ます。このメソッドは、データ インデックスごとに少なくとも 2 回呼び出されます。バーの位置に対して 1 回、バーの先端の値に対してもう一度呼び出されます。

-(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 に答える