2013-10-30 22 views
2

我在iOS上使用Shinobi控件圖表包,我無法理解如何實現顯示多個y值的十字線工具提示。在我的情況下,我有一個燭臺圖表,顯示使用SChartCandlestickSeries類的標準財務OHLC數據值。該文件似乎意味着我需要繼承SChartSeries以實現一些SChartData協議方法,但我不能相信這是涉及到的。Shinobi Charts:如何子類SChartCrosshairTooltip或SChartCrosshairMultiValueTooltip的示例

我還在努力通過這裏的文檔,但如果任何人有一些示例代碼,它現在將是值得它的重量黃金!

注意:我試過只是分配的SChartCrosshairMultiValueTooltip以圖表的crosshair.tooltip屬性的實例,但似乎並沒有做非常多 - 我剛纔看到一個正常的提示顯示單個x和y的值。

回答

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; 
} 

(注意,這裏的值只是樣品)

Sample Chart

+0

感謝偉大的答案,這讓我意識到自己的基本提示操作那麼簡單,因爲我認爲它應該是。我現在可以按照你的演示來工作;我想我昨天用我所做的所有絕望的黑客入侵了我的SChartSeries。現在我只需要將工具提示子類化以獲得我需要的外觀... – Echelon