2012-03-15 179 views
0

我使用CorePlot 1.0,並想一個傳說添加到我的條形圖(這是一個子類XYGraph)。我有viewController中的數據源和圖例標題方法,它實例化條形圖並將其自身設置爲其委託。核心情節1.0:提供自定義標籤的傳奇

我已經花了不少的時間用不同的委託和圖例設置,但找不到我的錯誤。你能給我提示我可能犯了什麼錯誤嗎?

我有子類XYGraph生成柱狀圖如下:

.h

@interface BarLineChart : CPTXYGraph 
@property (strong, nonatomic) id <CPTPlotDataSource, CPTBarPlotDataSource, CPTBarPlotDelegate, CPTPlotSpaceDelegate> delegate; 
@end 

我在執行.M,我成立了傳說如下:

// Add legend 
CPTLegend *legend   = [CPTLegend legendWithGraph:self]; 
legend.fill     = [CPTFill fillWithColor:[CPTColor colorWithGenericGray:0.15]]; 
legend.borderLineStyle  = axisLineStyle; 
legend.cornerRadius   = 10.0; 
legend.swatchSize   = CGSizeMake(16.0, 16.0); 
CPTMutableTextStyle *legendTextStyle = [CPTMutableTextStyle textStyle]; 
legendTextStyle.color  = [CPTColor whiteColor]; 
legendTextStyle.fontSize = 10.0; 
legend.textStyle   = legendTextStyle; 
legend.rowMargin   = 1.0; 
legend.numberOfRows   = 3; 
legend.paddingLeft   = 10.0; 
legend.paddingTop   = 10.0; 
legend.paddingRight   = 10.0; 
legend.paddingBottom  = 10.0; 
legend.delegate = self.delegate; 

self.legend     = legend; 
self.legendAnchor   = CPTRectAnchorTop; 
self.defaultPlotSpace.delegate = self.delegate; 

我將數據源方法保存在一個單獨的viewController中,爲此我設置了委託(存儲在self.delegate中)。 這是我的viewController的接口:

`@interface FinstatViewController : CompanyViewController <UITableViewDelegate, UITableViewDataSource, UISplitViewControllerDelegate, UIPopoverControllerDelegate, CompanyPresenter, ChartSelectionDelegate, CPTPlotDataSource, CPTBarPlotDataSource, CPTBarPlotDelegate, CPTPlotSpaceDelegate, CPTLegendDelegate, CPTScatterPlotDataSource, CPTScatterPlotDelegate>` 

我的數據源的方法來獲得繪圖數據工作正常,但圖例標題方法

-(NSString *)legendTitleForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSUInteger)index 

永遠不會被調用。

+0

你有沒有得到任何解決方案呢?我也有類似的問題 – SPatil 2012-03-26 13:10:35

回答

1

圖例標題方法是數據源的一部分,而不是委託。如果您的數據源和委託使用不同的類,請確保標題方法使用正確的方法。

+0

埃裏克,我在我的視圖控制器中實現了標題方法,在那裏我實現了數據源方法。我已經使用調試器驗證了我的委託'CPTPlotDataDataSource,CPTPlotSpaceDelegate,CPTBarPlotDataSource,CPTBarPlotDelegate,CPTLegendDelegate',並且它們似乎設置正確。我錯過了一個代表嗎?謝謝! – AlexR 2012-03-16 07:03:12

+0

正確調用使用相同委託的方法'barFillForBarPlot'。謝謝! – AlexR 2012-03-16 07:10:24