這聽起來像是你沿着正確的路線。你需要一個多值系列(由相應的數據源方法提供):
- (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;
}
(注意,這裏的值只是樣品)
![Sample Chart](https://i.stack.imgur.com/NKdJW.png)
感謝偉大的答案,這讓我意識到自己的基本提示操作那麼簡單,因爲我認爲它應該是。我現在可以按照你的演示來工作;我想我昨天用我所做的所有絕望的黑客入侵了我的SChartSeries。現在我只需要將工具提示子類化以獲得我需要的外觀... – Echelon