【问题标题】:iOS - How can I use a common view to draw different views depending on a property?iOS - 如何使用通用视图根据属性绘制不同的视图?
【发布时间】:2013-04-15 15:51:31
【问题描述】:

我有 2 个视图,名为“AA”和“AB”(在不久的将来我还会有更多:“AC”、“AD”等)。 现在在我的 viewControllers 中,我需要导入我所有的 UIView 子类并测试一些东西,以便知道我需要创建哪个子视图并将其添加到视图层次结构中。

我的想法是创建一个名为“A”的视图,该视图将确定需要绘制哪些子视图并将其“更改”为私有类,可以是“AA”或“AB”。 但我不知道该怎么做。

当然,我可以测试需要测试的内容,然后将新视图添加为子视图,但我的想法是只有一个视图而不是视图中的视图。

感谢您的回答

【问题讨论】:

    标签: iphone ios ipad uiview subclass


    【解决方案1】:

    您可以使用State Design Pattern 的变体来实现对象需要在运行时配置其活动的系统。您可以创建一个单独的视图,而不是在视图中创建视图,该视图保留一个知道如何在视图中绘制的事物列表,而这些事物本身不是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 类可以保留NSArrayViewDraw 对象,使用它需要绘制的视图绘制对象对其进行配置,然后调用它们进行绘制。重新配置ViewDraw 对象列表将产生ViewA 在运行时更改其行为的效果。

    【讨论】:

    • 而 ViewDraw 是 NSObject 或 UIView 的子类?
    • @Dave 是NSObject 的子类。
    • 我可能错了,但 nsobject 不应该绘制。通常 UIViews 或子类应该不绘制?
    • @Dave 任何东西都可以帮助UIView 画画。 UIViewdrawRect方法,可以调用其他对象的方法进行绘制。只要是drawRect 进行调用,就iOS 而言,绘图是UIView
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多