【发布时间】:2013-01-02 10:42:45
【问题描述】:
我有一个带有两个选项卡的选项卡式应用程序。
在第二个选项卡上,我绘制了一个图表。
但每次我按此选项卡时,UIview 都不会刷新。
我试过了,
[self.view setNeedsDisplay]
inside
- (void)viewDidLoad
但它仍然没有刷新。
我尝试将代码从 - (void)viewDidLoad 粘贴到 -(void)viewDidAppear
但什么也没发生。
等待答复。
编辑:整个源代码
- (void)viewDidLoad
{
//[self.view setNeedsDisplay];
Sensor_VisualizationAppDelegate *delegate = (Sensor_VisualizationAppDelegate *)[[UIApplication sharedApplication] delegate];
valuePass = delegate.valuepass;
timePass = delegate.timepass;
NSNumber *value1 = [valuePass objectAtIndex:0];
NSNumber *value2 = [valuePass objectAtIndex:1];
NSNumber *value3 = [valuePass objectAtIndex:2];
NSNumber *value4 = [valuePass objectAtIndex:3];
NSNumber *value5 = [valuePass objectAtIndex:4];
NSNumber *value6 = [valuePass objectAtIndex:5];
NSNumber *value7 = [valuePass objectAtIndex:6];
NSString *time1 = [timePass objectAtIndex:0];
NSString *time2 = [timePass objectAtIndex:1];
NSString *time3 = [timePass objectAtIndex:2];
NSString *time4 = [timePass objectAtIndex:3];
NSString *time5 = [timePass objectAtIndex:4];
NSString *time6 = [timePass objectAtIndex:5];
NSString *time7 = [timePass objectAtIndex:6];
OVGraphView *graphview=[[OVGraphView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, 300) ContentSize:CGSizeMake(960, 300)];
graphview.reverse=YES;
graphview.graphcolor=[UIColor colorWithRed:0.31 green:0.73 blue:0.78 alpha:1.0];
[self.view addSubview:graphview];
[graphview setPoints:@[ [[OVGraphViewPoint alloc]initWithXLabel:time1 YValue:value1],
[[OVGraphViewPoint alloc]initWithXLabel:time2 YValue:value2],
[[OVGraphViewPoint alloc]initWithXLabel:time3 YValue:value3],
[[OVGraphViewPoint alloc]initWithXLabel:time4 YValue:value4],
[[OVGraphViewPoint alloc]initWithXLabel:time5 YValue:value5],
[[OVGraphViewPoint alloc]initWithXLabel:time6 YValue:value6],
[[OVGraphViewPoint alloc]initWithXLabel:time7 YValue:value7]
]];
[super viewDidLoad];
}
【问题讨论】:
-
你是如何绘制图表的?每当您切换到该选项卡时,都会调用 viewWillAppear/viewDidAppear。 viewDidLoad 只会在第一次加载视图时调用。
-
@JamesP 我正在使用一个名为OVGraphView 的框架来绘制它,让我发布整个代码。但是我应该如何将 viewDIdload 链接到我的 UIview,因为当我尝试将代码复制粘贴到 ViewDidLoad 中时,什么也没发生。
-
我对此并不熟悉,但是如果你在你的graphView 上调用setNeedsDisplay,而不是self.view 会怎样。 (这应该在 viewWillAppear 内)。
-
@JamesP 我试过 [self.graphview setNeedsDisplay];但什么也没发生。
-
我对您实际想要什么感到有些困惑,您是否正在更改数据集,否则我猜它只是像以前一样重绘图形。您可以尝试将所有代码移至 viewWillAppear 并删除旧的图表视图,然后再添加新的。
标签: ios objective-c uiview refresh