我正在使用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/

10-12 21:28
查看更多