2010-03-28 53 views

回答

12

不,UILabel类没有实现NSCopying协议。如果你想为所有的视图添加相同的视图,也许继承自定义视图是最好的方法。

-13

copy方法可被任何来自NSObject继承,所以我的第一个停靠港将只是尝试

UILabel *second = [first copy]; 

然而,这可能不是按预期100%,一些的UILabel propertiesmight不会被复制你想要什么。如果没有,您可以尝试使用NSCoding方法 - 对对象进行编码,然后将其解码为新对象?

它可能是更容易通过手虽然做到这一点;)

山姆

+1

如上所述,这是行不通的。你会得到这样的错误: '“NSInvalidArgumentException”的,理由是:“ - [的UILabel copyWithZone:]:无法识别的选择发送到实例0x7b959d0'' – Besi 2011-10-27 12:07:53

+0

是的,大量的对象做到这一点,这真是烦人:(我的下一个建议到OP将是创建一个实现NSCopying,并产生一个新的UILabel类:)不幸的是在此之前有人提供了一个不同的答案是解决了这个问题:) – deanWombourne 2011-10-27 14:30:55

0

正如@starkhalo说,UILabel不符合NSCopying。所以你不能在UILabel中使用复制方法。

iPhone文档为NSObject清清楚楚地写着 -

NSObject本身并不支持NSCopying协议。子类必须支持该协议并实施copyWithZone:方法。

-1

您可以为该标签设置一个单独的XIB,并致电[[NSBundle mainBundle] loadNibNamed:@"LabelNib" owner:self options:nil];将该笔尖的文件所有者设置为您的委托类,并进行正确的连接。现在你可以将标签添加到您的视图需要很多次,修改每一个(用一个for循环,例如)。

相关问题