所以我有一个图表绘图视图。它位于视图控制器中,以模态形式呈现。问题是drawInRect没有被调用。这是为什么?视图在Interface Builder中设置,并初始化...
- (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中获得界限......显然不是
答案 0 :(得分:1)
您已注释掉将PSChartIOS视图放入视图层次结构的行。
// [self.view addSubview:self.chartView];
我敢打赌,一旦你这样做,一切都会好的。
你的框架也没有意义。使用类似
的框架创建视图CGRectMake(0,0,200,200).
这将测试以确保您可以在视图控制器的视图中看到200x200的图表。
答案 1 :(得分:0)
我无法在您的代码中看到drawInRect
方法调用。
如果您希望setNeedsDisplay
可以拨打电话。然后它不能自动调用。如果您已创建自己的方法,则需要明确调用它。
然而,它会调用drawRect
。
编辑:
您输错了没有名为drawInRect:
的方法drawRect:
- (void)drawRect:(CGRect)rect {
// Drawing code
// only draws what is specified by the rect parameter
}