2012-09-08 14 views
9

मैं सरल बार चार्ट आवेदन में काम कर रहे, इस आवेदन को विकसित करने के का उपयोग करना है, तो मैं बार चार्ट को लागू करने की कोशिश, लेकिन मैं इस मुद्दे कोआईफोन में बार चार्ट को कैसे कार्यान्वित करें?

[__NSCFConstantString sizeWithTextStyle:]: unrecognized selector sent to instance 0x7fb4c' 
    First throw call stack: 

में पाया मिल इसे कैसे ठीक करने के लिए कर रहा हूँ?

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]; 
} 
: कृपया मेरी मदद अग्रिम

में

धन्यवाद मैं इस कोशिश की

+0

आप जानते हैं कि त्रुटि संदेश का अर्थ क्या है, सही? (और त्रुटि के बिंदु पर कॉल स्टैक को जोड़ना इस निदान में बहुत उपयोगी होगा।) –

उत्तर

17

सुनिश्चित करें कि आप बिल्ड सेटिंग्स में -all_load "अन्य लिंकर ध्वज" सेट करें। वह ध्वज प्रणाली को सभी श्रेणी विधियों जैसे -sizeWithTextStyle: लोड करने के लिए मजबूर करता है।

+0

आपके उत्तर के लिए धन्यवाद – SampathKumar

+0

यह कहने के लिए खेद है, क्या आप इस – SampathKumar

+2

के लिए कोई उदाहरण दे सकते हैं क्या आपने [कोर प्लॉट विकी] पढ़ा है (https://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications)? –

10

जैसा कि एरिक ने समझाया है, आपको बिल्ड सेटिंग्स में -all_load ध्वज को सेट करने की आवश्यकता है। यदि आप सोच रहे हैं कि इस तस्वीर पर वास्तव में यह कहां है। शुभकामनाएँ!

Setting the all_add flag on XCode

+0

उन सभी के लिए जिनके पास लिंकर सेटिंग्स का पता लगाने के समान समस्या थी, सुनिश्चित करें कि "सभी" सेटिंग्स डिफ़ॉल्ट "मूल" सेटिंग्स के बजाय चुनी गई हैं। मुझे फाइल बनाने से नफरत है। – Hampden123