如何使我的UIControl子类成为以编程方式创建的UIElements的超类?

时间:2012-12-26 14:58:19

标签: ios objective-c uielement uicontrol

在我的应用程序中,我想将NSMutableDictionary关联到所有UIElementsUIButtonUILable等),我可以通过继承每个元素轻松实现这一点,但我只是想知道我是否可以创建自己的UIControl子类 - 具有类型NSMutableDictionary的属性 - 作为所有以编程方式创建的UIElement的超类,以便我可以减少子类数。

就像这样

@interface UIControl : MyControls
{

}
@property(nonatomic,retain) NSMutableDictionary *details;
@end

并将MyControls作为所有以编程方式创建的UIElements的超类

1 个答案:

答案 0 :(得分:0)

您可以执行此操作,而不是通过子类化,而是将自己的属性和方法添加到UIControl本身(UIButtonUILabel的超类等)。然后,这些将由您实例化的任何标准按钮,标签等继承。 Objective-C允许您使用Categories非常轻松地添加自己的方法。但是,您无法通过类别添加实例变量。为此,您需要使用Objective-C Runtime Reference中记录的关联引用。

有一个关于如何执行此操作的良好教程here

顺便说一下,我不一定不同意inturbidus。但如果你确定要走这条路,你就是这样做的。