2013-11-14 4 views
0

Я пытаюсь заполнить график гистограммы с помощью NSArray для динамического обновления при каждом вызове вида.Заполнение гистограммы из массива с основным графиком

массив выглядит следующим образом: Motor = [[NSArray alloc]initWithObjects:@"100", @"200", @"345", @"476", @"512", nil];

и вот как я называю создание в

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index{ 

     if ([plot.identifier isEqual:@"Motor"]) { 
       return [Motor objectAtIndex:index]; 
     } 
} 

Любая помощь будет очень хорошо.

+0

Вы возвращаете строку, в которой вы должны вернуть NSNumber ... –

ответ

0

Вы реализовали этот метод?

- (NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot 

Кроме того, вы никогда не проверяете поле, для которого значение будет возвращено. Вы должны попробовать это.

- (NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)idx 
{ 
    NSNumber* value; 
    if ([plot.identifier isEqual:@"Motor"]) 
    { 
     // The location of the bar 
     if(fieldEnum == CPTBarPlotFieldBarLocation) 
     { 
      value = [NSNumber numberWithInteger:index]; 
     } 
     // The value/height of the bar 
     else if(fieldEnum == CPTBarPlotFieldBarTip) 
     { 
      value = [Motor objectAtIndex:index]; 
     } 
    } 
    return value; 
} 
+0

Спасибо за вашу помощь. –

0

Как вы добавляете значения NSString к массиву @ "100"; это строковое значение. Поэтому, когда вы возвращаете значение, вы возвращаете строку, и это должно быть NSNumber.

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index{ 

     if ([plot.identifier isEqual:@"Motor"]) { 
       NSString *value = [Motor objectAtIndex:index]; 
       return [NSNumber numberWithInteger:[value integerValue]];// this will return number value with array walues. 
     } 
     return [NSNumber numberWithInteger:0];//will return zero you can return whatever you want 
} 
Смежные вопросы