гистограмма основного графика, привязанная к NSArrayController - PullRequest
0 голосов
/ 29 января 2012

Я пытаюсь сконструировать гистограмму, которая будет получать свои данные от NSArrayController, который сам связан с другим источником данных.

Какой правильный подход здесь?

  • Контроллер My Graph является подклассом NSArrayController
  • В контроллере awakeFromNib я рисую график и устанавливаю привязки:

- (void) awakeFromNib {

[super awakeFromNib];

// Add plot space for horizontal bar charts
CPTXYPlotSpace *barPlotSpace = [[CPTXYPlotSpace alloc] init];
barPlotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-20.0f) length:CPTDecimalFromFloat(200.0f)];
barPlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-7.0f) length:CPTDecimalFromFloat(15.0f)];
[graph addPlotSpace:barPlotSpace];
//[barPlotSpace release];

// First bar plot
CPTMutableTextStyle *whiteTextStyle = [CPTMutableTextStyle textStyle];
whiteTextStyle.color = [CPTColor whiteColor];
CPTBarPlot *barPlot = [[CPTBarPlot tubularBarPlotWithColor:[CPTColor darkGrayColor] horizontalBars:YES] retain];
barPlot.baseValue = CPTDecimalFromFloat(20.0f);
barPlot.dataSource = self;
barPlot.barOffset = CPTDecimalFromFloat(-0.25f);
barPlot.identifier = barPlot1;
barPlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0) length:CPTDecimalFromDouble(7.0)];
barPlot.labelTextStyle = whiteTextStyle;
[graph addPlot:barPlot toPlotSpace:barPlotSpace];

/*
// Second bar plot
barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:YES];
barPlot.dataSource = self;
barPlot.baseValue = CPTDecimalFromFloat(20.0f);
barPlot.barOffset = CPTDecimalFromFloat(0.25f);
barPlot.cornerRadius = 2.0;
barPlot.identifier = barPlot2;
barPlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0) length:CPTDecimalFromDouble(7.0)];
barPlot.delegate = self;
[graph addPlot:barPlot toPlotSpace:barPlotSpace];  
 */

[barPlot bind:CPTBarPlotBindingBarLocations
                toObject:self withKeyPath:@"arrangedObjects" options:nil];  }

это правильный способ сделать это?

Мои упорядоченные объекты - это набор управляемых объектов с именем и полем времени, которые мне нужно отобразить.

Спасибо!

1 Ответ

0 голосов
/ 29 января 2012

При использовании привязок не устанавливайте источник данных.Не забудьте также привязать поле к CPTBarPlotBindingBarTips.

Пример приложения CPTTestApp демонстрирует привязку графика рассеяния к контроллеру массива.Процесс для гистограммы такой же, за исключением того, что константы связывания имеют разные имена.

...