2

iOS で Shinobi Controls チャート作成パッケージを使用していますが、複数の y 値を表示するクロスヘア ツールチップを実装する方法がわかりません。私の場合、SChartCandlestickSeriesクラスを使用して標準的な財務 OHLC データ値を示すローソク足チャートがあります。SChartSeriesドキュメントは、いくつかのプロトコルメソッドを実装するためにan をサブクラス化する必要があることを暗示しているようですがSChartData、それが関係しているとは信じられません。

私はまだここのドキュメントに苦労していますが、誰かがサンプルコードを持っているなら、今すぐ金でその価値があるでしょう!

SChartCrosshairMultiValueTooltip: のインスタンスをグラフのプロパティに単純に割り当てようとしましcrosshair.tooltipたが、あまり効果がないようです。単一の x 値と y 値を表示する通常のツールチップが表示されるだけです。

4

1 に答える 1

2

あなたは非常に正しい線に沿っているようですね。多値シリーズが必要です (適切なデータソース メソッドによって提供されます)。

- (SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(int)index
{
    SChartCandleStickSeries *series = [SChartCandlestickSeries new];
    series.crosshairEnabled = YES;
    return series;
}

そして、チャートには、あなたが言及したタイプのインスタンスに設定されたツールチップが必要です ( SChartCrosshairMultiValueTooltip):

ShinobiChart *chart = [[ShinobiChart alloc] initWithFrame:self.view.bounds
                                     withPrimaryXAxisType:SChartAxisTypeNumber
                                     withPrimaryYAxisType:SChartAxisTypeNumber];
chart.datasource = self;
[self.view addSubview:chart];
chart.delegate = self;
chart.crosshair.tooltip = [SChartCrosshairMultiValueTooltip new];

完全を期すために、データソースのデータ ポイント メソッドを次に示します。

- (id<SChartData>)sChart:(ShinobiChart *)chart
        dataPointAtIndex:(int)dataIndex
        forSeriesAtIndex:(int)seriesIndex
{
    SChartMultiYDataPoint *d = [SChartMultiYDataPoint new];
    d.xValue = @(dataIndex);
    [d.yValues setValue:_data[dataIndex] forKey:SChartCandlestickKeyOpen];
    [d.yValues setValue:@([_data[dataIndex] doubleValue] * 1.3) forKey:SChartCandlestickKeyHigh];
    [d.yValues setValue:@([_data[dataIndex] doubleValue] * 0.8) forKey:SChartCandlestickKeyLow];
    [d.yValues setValue:@([_data[dataIndex] doubleValue] * 1.1) forKey:SChartCandlestickKeyClose];
    return d;
}

(ここでの値は単なるサンプルであることに注意してください)

サンプルチャート

于 2013-10-30T19:30:19.853 に答える