我正在使用CorePlot 1.0,并且想在我的条形图(这是XYGraph的子类)中添加图例。我在viewController中具有数据源和图例标题方法,该方法实例化条形图并将其自身设置为其委托。
我已经花了很多时间使用不同的委托和图例设置,但是找不到我的错误。您能给我一些提示,指出我可能在哪里出错了吗?
我将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
从未被调用。
最佳答案
图例标题方法是数据源的一部分,而不是委托的一部分。如果您的数据源和委托位于不同的类中,请确保使用正确的方法实现title方法。
关于objective-c - 核心图1.0:为图例提供自定义标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9720863/