如何更改显示在同一视图中的图表?如何更改显示在同一视图中的图表?
我有一个视图里面的视图控制器。 这个视图里面有另一个视图,我已经为其分配了一个自定义类(子类UIView)。 此自定义类具有在此视图中绘制交互式图表的代码。 交互式代码由主视图中的滑块操作。 我在界面构建器中拥有所有这些功能。
如果我想在此视图中绘制完全不同的图表,该怎么办? 我希望能够用一组不同的绘图代码为这个视图分配一个新的类?但是如何?
如何更改显示在同一视图中的图表?如何更改显示在同一视图中的图表?
我有一个视图里面的视图控制器。 这个视图里面有另一个视图,我已经为其分配了一个自定义类(子类UIView)。 此自定义类具有在此视图中绘制交互式图表的代码。 交互式代码由主视图中的滑块操作。 我在界面构建器中拥有所有这些功能。
如果我想在此视图中绘制完全不同的图表,该怎么办? 我希望能够用一组不同的绘图代码为这个视图分配一个新的类?但是如何?
有很多方法可以做到这一点,但changing the class at runtime是not 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
}
谢谢。我喜欢选项3。 – 2013-04-04 22:00:33