我使用Interface Builder将用户定义的运行时属性添加到UIButton
。该属性名为strokeColor
,类型为Color
。
我尝试以编程方式设置它,如下所示:
UIColor *someColor = [UIColor yellowColor];
[myButton setValue:someColor forKey:@"strokeColor"];
第二行崩溃,我收到以下错误:
'***由于未捕获的异常'NSUnknownKeyException'终止应用,原因:'[ setValue:forUndefinedKey:]:此类不是键值 符号编码兼容关键strokeColor。'
这个例外可能是什么原因?用户定义颜色类型的运行时属性的数据类型是什么?
答案 0 :(得分:1)
运行时属性允许您访问对象的属性,否则这些对象将无法在Interface Builder 中显示,但您仍需要通过运行时属性定义要访问的任何属性。简单地将运行时属性添加到没有匹配属性的类将抛出异常,如您所见。
在您的情况下,如果您希望能够通过运行时属性在UIButton
上设置名为strokeColor的属性,首先必须创建具有该属性的UIButton
子类或类别,然后您将能够设置相应的运行时属性;
这是UIButton
类别:
@interface UIButton (Coloring)
@property (nonatomic, strong) UIColor *strokeColor;
@end