0

だから私はチャート描画ビューを持っています。モーダルとして表示されるのはビューコントローラです。問題は、drawInRectが呼び出されないことです。何故ですか?ビューはInterfaceBuilderで設定され、初期化されます...

- (void)viewWillAppear:(BOOL)animated
{
    minVal = [self.delegate minValue];
    maxVal = [self.delegate maxValue];
    noSteps = [self.delegate noSteps];
    stepVal = [self.delegate stepValue];
    data = [self.delegate dataArray];
    formulaName = [self.delegate formulaName];
    self.titleLabel.text = formulaName;

    // draw the chart
    self.chartView = [[PSChartIOS alloc] initWithFrame:self.chartView.bounds andChartType:PSChartTypeColumn];
    [self.chartView setDataSource:self];
    [self.chartView setChartTitle:@""];
    [self.chartView setPanOXAxis:YES];
    [self.chartView setTitleColor:[UIColor redColor]];
    [self.chartView setStartAtTheEnd:NO];
    //[chart setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

    [self.chartView loadData];
    [self.chartView setNeedsDisplay];
    // NSLog(@"autoresize mask :%d",self.view.autoresizingMask);

//    [self.view addSubview:self.chartView];
//    [self.chartView addSubview:chart];




    [super viewWillAppear:animated];
}

すべてのデリゲートメソッドが呼び出されるので、ビューにはデータがあります...描画されません...問題はself.chartView.boundsである可能性がありますが、境界がIBで設定されていることを返す必要があります。 ..。。

問題が見つかりました:

 NSLog(@"the bounds %@",NSStringFromCGRect( self.chartView.bounds));

戻り値

the bounds {{0, 0}, {0, 0}}

私はそれがIBから限界を得るだろうと思った..明らかにそうではない

4

2 に答える 2

1

PSChartIOSビューをビュー階層に配置する行をコメントアウトしました。

//    [self.view addSubview:self.chartView];

一度やれば、すべてがうまくいくと思います。

また、フレームは意味がありません。次のようなフレームでビューを作成します

CGRectMake(0,0,200,200).  

これは、ViewControllerのビューに200x200のチャートが表示されることを確認するためにテストされます。

于 2013-03-26T13:49:17.867 に答える
0

drawInRectコードにメソッド呼び出しが表示されません。

あなたがsetNeedsDisplayそれを呼ぶことを期待しているなら。その後、自動的に呼び出すことはできません。独自のメソッドを作成した場合は、それを明示的に呼び出す必要があります。

ただし、を呼び出しますdrawRect

編集:

あなたはタイプミスをしましたそれと呼ばれる方法はありませんdrawInRect:drawRect:

- (void)drawRect:(CGRect)rect {
    // Drawing code
    // only draws what is specified by the rect parameter
}
于 2013-03-26T13:46:59.810 に答える