以编程方式设置用户定义的运行时属性
我使用Interface Builder将用户定义的运行时属性添加到UIButton
。 该属性名为strokeColor
,属于Color
types。
我尝试以编程方式设置它,如下所示:
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