estoy trabajando en el gráfico de barras sencilla aplicación, uso de para desarrollar esta aplicación, entonces trato de poner en práctica el gráfico de barras, pero me sale el tema que se encuentra en¿Cómo implementar un gráfico de barras en iPhone?
[__NSCFConstantString sizeWithTextStyle:]: unrecognized selector sent to instance 0x7fb4c'
First throw call stack:
Cómo solucionar este problema? por favor ayúdame
Gracias de antemano
He intentado esto:
Viewcontroller.h
#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"
@interface GraphViewController : UIViewController <CPTPlotDataSource>
{
CPTXYGraph *barChart;
NSTimer *timer;
NSMutableArray *samples;
}
-(void) getGraphValues;
@end
Viewcontroller.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor=[UIColor whiteColor];
self.title = @"Sample";
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
[self.navigationController setNavigationBarHidden:NO];
[self getGraphValues];
double xAxisLength = [samples count];
barChart = [[CPTXYGraph alloc] initWithFrame:CGRectMake(0, 0, 320, 380)];
barChart.plotAreaFrame.borderLineStyle = nil;
barChart.plotAreaFrame.cornerRadius = 0.0f;
barChart.paddingLeft = 0.0f;
barChart.paddingRight = 0.0f;
barChart.paddingTop = 0.0f;
barChart.paddingBottom = 0.0f;
barChart.plotAreaFrame.paddingLeft = 60.0;
barChart.plotAreaFrame.paddingTop = 40.0;
barChart.plotAreaFrame.paddingRight = 10.0;
barChart.plotAreaFrame.paddingBottom = 40.0;
barChart.title = @"Sample Innovations";
CPTMutableTextStyle *textStyle = [CPTTextStyle textStyle];
textStyle.color = [CPTColor grayColor];
textStyle.fontSize = 16.0f;
textStyle.textAlignment = CPTTextAlignmentCenter;
barChart.titleTextStyle = textStyle; // Error found here
barChart.titleDisplacement = CGPointMake(0.0f, -10.0f);
barChart.titlePlotAreaFrameAnchor = CPTRectAnchorTop;
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)barChart.axisSet;
CPTXYAxis *x = axisSet.xAxis;
x.axisLineStyle = nil;
x.majorTickLineStyle = nil;
x.minorTickLineStyle = nil;
x.majorIntervalLength = CPTDecimalFromString(@"10");
x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
x.title = @"Names";
x.titleLocation = CPTDecimalFromFloat(7.5f);
x.titleOffset = 25.0f;
// Define some custom labels for the data elements
x.labelRotation = M_PI/5;
x.labelingPolicy = CPTAxisLabelingPolicyNone;
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:0], [NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:2], [NSDecimalNumber numberWithInt:3], [NSDecimalNumber numberWithInt:4], nil];
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", @"e", nil];
NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]];
for (NSNumber *tickLocation in customTickLocations)
{
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle];
newLabel.tickLocation = [tickLocation decimalValue];
newLabel.offset = x.labelOffset + x.majorTickLength;
newLabel.rotation = M_PI/xAxisLength;
[customLabels addObject:newLabel];
}
x.axisLabels = [NSSet setWithArray:customLabels];
CPTXYAxis *y = axisSet.yAxis;
y.axisLineStyle = nil;
y.majorTickLineStyle = nil;
y.minorTickLineStyle = nil;
y.majorIntervalLength = CPTDecimalFromString(@"50");
y.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
y.title = @"Work Status";
y.titleOffset = 40.0f;
y.titleLocation = CPTDecimalFromFloat(150.0f);
CPTGraphHostingView *hostingView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(0, 0, 320, 360)];
hostingView.hostedGraph = barChart;
[self.view addSubview:hostingView];
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) barChart.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0f) length:CPTDecimalFromDouble(16.0f)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0f) length:CPTDecimalFromDouble(500.0f)];
CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
barPlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0) length:CPTDecimalFromDouble(10)];//xAxisLength
barPlot.barOffset = CPTDecimalFromFloat(0.25f);
barPlot.baseValue = CPTDecimalFromString(@"0");
barPlot.barWidth = CPTDecimalFromFloat(10.0f);
barPlot.cornerRadius = 2.0f;
barPlot.dataSource = self;
[barChart addPlot:barPlot];
}
-(void) getGraphValues
{
int barValues [] = {10,50,100,200};//,150,200,10,20,30,40,50,100,400,450,350
int barNums = sizeof(barValues)/sizeof(int);
samples = [[NSMutableArray alloc] initWithCapacity:barNums];
for (int i = 0; i < 4; i++)
{
double x = i;
double y = barValues[i];
NSLog(@"XVal : %@", X_VAL);
NSDictionary *sample = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithDouble:30],X_VAL,[NSNumber numberWithDouble:y],Y_VAL,nil];
[samples addObject:sample];
}
}
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
return [samples count];
}
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
NSDictionary *sample = [samples objectAtIndex:index];
if (fieldEnum == CPTScatterPlotFieldX)
return [sample valueForKey:X_VAL];
else
return [sample valueForKey:Y_VAL];
}
Sabes lo que significa ese mensaje de error, ¿verdad? (Y anexar la pila de llamadas en el punto de error sería muy útil para diagnosticar esto.) –