0

私は Objective C の初心者です。ここで簡単な質問をしたいと思います。
でビュー コントローラを作成し、storyboardそのビューを のサブクラスでカスタマイズしましたUIView
ただし、View Controller でビューのメソッドを呼び出す方法がわかりません。誰でも助けることができますか?私がしたいのは、から電話することだけdrawLine:pointStoreですChartViewController.mchartView.m

ここに私のコードのいくつかがあります。
ChartViewController.h

#import <UIKit/UIKit.h>
@class chartView;

@interface ChartViewController : UIViewController{  
    chartView *chart_view;  
}  

ChartViewController.m

- (void)viewDidLoad  
{  
    [super viewDidLoad];  

    NSMutableDictionary *pointStore = [[NSMutableDictionary alloc]init];  

    NSNumber *initX;  
    NSNumber *initY;  
    NSMutableDictionary *variableSet = [[NSMutableDictionary alloc]init];
    for(initX = [NSNumber numberWithDouble:-10.0f];initX.floatValue<=10.0f;initX = [NSNumber numberWithDouble:(initX.floatValue+0.5f)] )
    {
        [variableSet setValue:initX forKey:@"x"];
        initY = [NSNumber numberWithDouble:[self.brain performOperation:equationOfChart withVariable:variableSet]];
        [pointStore setObject:initX forKey:initY];
    }
    [chart_view drawLine:pointStore];
}

chartView.h

@interface chartView : UIView

@property (nonatomic, strong) NSString *equation;
-(void) getEquation:(NSString *)Equation;
-(void) drawLine:(NSMutableDictionary *)pointsStore;

@end

chartView.m

-(void)drawLine:(NSMutableDictionary *)pointsStore{
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
    CGContextSetStrokeColor(c, red);
    CGContextBeginPath(c);
    CGContextStrokePath(c);
    for(NSNumber *ax = [NSNumber numberWithDouble:-10.0f];ax.floatValue<10.0f;){
        float ay = [[pointsStore objectForKey:ax]doubleValue];
        ax = [NSNumber numberWithDouble:(ax.floatValue+0.5f)];
        int by = [[pointsStore objectForKey:ax]doubleValue];
        [self.class line:ax.floatValue y:ay  x2:(ax.floatValue+0.5) y2:by];
    }
}
4

2 に答える 2

0

chart_viewのインスタンスが作成され、割り当てられていることを確認する必要があります。おそらく、そのポインターには nil があります。

これを行う方法 -- ビューを作成するために選択した方法 (Interface Builder または動的、コード) によって異なります。

于 2012-11-17T14:45:44.113 に答える
0

ChartViewController.h

#import <UIKit/UIKit.h>
@class chartView;

@interface ChartViewController : UIViewController

@property (string, nonatomic) chartView *chart_view;

@end

chartView.m

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    ...
    // Don't forget to alloc and init
    self.chart_view = [[chartView alloc] init];
    [self.chart_view drawLine:pointStore];
}
于 2012-11-17T14:48:29.093 に答える