我有 2 个名为“AA”和“AB”的视图(在不久的将来我会有更多:“AC”、“AD”等)。现在在我的 viewControllers 中,我需要导入我所有的 UIView 子类并测试一些东西,以便知道我需要创建哪个子视图并将其添加到视图层次结构中。
我的想法是创建一个名为“A”的视图,它将确定它需要绘制哪些子视图并将其“更改”为私有的,可以是“AA”或“AB”。但我不知道该怎么做。
当然,我可以测试需要测试的内容,然后将新视图添加为子视图,但想法是只有一个视图而不是视图中的视图。
感谢您的回答
您可以使用状态设计模式的变体来实现对象需要在运行时配置其活动的系统。您可以创建一个单独的视图,而不是在视图中创建视图,该视图保留一个知道如何在视图中绘制的事物列表,而这些事物本身不是UIView对象。
这是一个例子:
@interface ViewDraw
-(void)drawInView; // the UIView caller can pass parameters here
@end
@interface ViewDrawA : ViewDraw
-(void)drawInView;
@end
@interface ViewDrawB : ViewDraw
-(void)drawInView;
@end
@interface ViewDrawC : ViewDraw
-(void)drawInView;
@end
现在您的ViewA类可以保留一个对象,使用它需要绘制的视图绘制对象对其进行配置,然后调用它们进行绘制NSArray。ViewDraw重新配置对象列表ViewDraw将具有ViewA在运行时更改其行为的效果。