以编程方式设置用户定义的运行时属性

我使用Interface Builder将用户定义的运行时属性添加到UIButton 。 该属性名为strokeColor ,属于Colortypes。

我尝试以编程方式设置它,如下所示:

 UIColor *someColor = [UIColor yellowColor]; [myButton setValue:someColor forKey:@"strokeColor"]; 

第二行崩溃,我得到以下错误:

'***终止应用程序由于未捕获的exception'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:这个类不是关键值编码兼容的关键strokeColor。

什么可能是这个例外的原因? 用户定义的types颜色的运行时属性所期望的数据types是什么?

运行时属性允许您访问在Interface Builder中不会出现的对象的属性,但是您仍然必须通过运行时属性定义您正在访问的任何属性。 正如你所看到的,简单地将一个运行时属性添加到没有匹配属性的类将会抛出一个exception。

在你的情况下,如果你想能够通过运行时属性在UIButton上设置一个名为strokeColor的属性,首先你必须创build一个UIButton子类或者具有属性的类别,然后你就可以设置它的相应的运行时属性;

这是一个UIButton类别:

 @interface UIButton (Coloring) @property (nonatomic, strong) UIColor *strokeColor; @end