Core Plot 1.0:为图例提供自定义标签

时间:2012-03-15 13:39:07

标签: objective-c ios delegates core-plot

我正在使用 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
永远不会打电话给

1 个答案:

答案 0 :(得分:1)

图例标题方法是数据源的一部分,而不是委托。如果您的数据源和委托在不同的类中,请确保标题方法以正确的方式实现。