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

时间:2014-08-31 14:25:53

标签: ios objective-c uibutton interface-builder

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

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

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

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

  

'***由于未捕获的异常'NSUnknownKeyException'终止应用,原因:'[   setValue:forUndefinedKey:]:此类不是键值   符号编码兼容关键strokeColor。'

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

1 个答案:

答案 0 :(得分:1)

运行时属性允许您访问对象的属性,否则这些对象将无法在Interface Builder 中显示,但您仍需要通过运行时属性定义要访问的任何属性。简单地将运行时属性添加到没有匹配属性的类将抛出异常,如您所见。

在您的情况下,如果您希望能够通过运行时属性在UIButton上设置名为strokeColor的属性,首先必须创建具有该属性的UIButton子类或类别,然后您将能够设置相应的运行时属性;

这是UIButton类别:

@interface UIButton (Coloring)

@property (nonatomic, strong) UIColor *strokeColor;

@end