2013-04-04 66 views
0

如何更改显示在同一视图中的图表?如何更改显示在同一视图中的图表?

我有一个视图里面的视图控制器。 这个视图里面有另一个视图,我已经为其分配了一个自定义类(子类UIView)。 此自定义类具有在此视图中绘制交互式图表的代码。 交互式代码由主视图中的滑块操作。 我在界面构建器中拥有所有这些功能。

如果我想在此视图中绘制完全不同的图表,该怎么办? 我希望能够用一组不同的绘图代码为这个视图分配一个新的类?但是如何?

回答

0

有很多方法可以做到这一点,但changing the class at runtimenot advisable

这里有几个建议:

1 /在相同位置的正确类型的不同视图实例作为你的第一个替换customView1鉴于...

self.customView2 = [[CustomView2 alloc] initWithFrame:self.customView1.frame]; 
    [self.view addSubView:self.customView2]; 
    [self.customView1 removeFromSuperView]; 

此示例使用每个交换子视图的独特性质,但你可以使用一个单一的财产只是指当前子视图 - 这可以帮助您的滑块连接起来,对图表做正确的事情。如果你正在做很多这样的事情,你需要考虑内存问题 - 当customView1消失时,你会重用它吗?您可以将其保留在(强)属性中(更快,需要更多内存),或者每次创建一个新的(较慢,需要较少内存)。

2 /如果您想在它们之间进行切换,可以将它们都放置在Interface Builder中,并在视图层次结构(self.view.subviews数组)中切换它们的hidden属性或它们的顺序。节省必须不断重新创建视图。

3(更好的...)/保存到的UIView的一个子类,并使用属性来影响被画的图...

//CustomView.h 

@property (nonatomic,assign) BOOL drawDiagram1; 
@property (nonatomic, assign) BOOL drawDiagram2; 

//CustomView.m 

- (void)drawRect { 
    if (drawDiagram1) [self drawDiagram1]; 
    if (drawDiagram2) [self drawDiagram2]; 
} 

- (void) drawDiagram1 { 
    //drawDiagram1 code here 
} 

- (void) drawDiagram2 { 
    //drawDiagram2 code here 
} 
+0

谢谢。我喜欢选项3。 – 2013-04-04 22:00:33

相关问题