Базовый сюжет 1.0: предоставление пользовательских меток для легенд - PullRequest
0 голосов
/ 15 марта 2012

Я использую 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 Ответ

1 голос
/ 16 марта 2012

Метод заголовка легенды является частью источника данных, а не делегатом. Если ваш источник данных и делегат находятся в разных классах, убедитесь, что метод title реализован в правильном классе.

...