是否可以复制UILabel,以便将其作为子视图添加到多个UIViews?

时间:2010-03-28 00:31:35

标签: iphone

我知道一个视图只能是一个superview的子视图,所以是否可以复制UILabel所以我不必复制设置代码或编写一个函数来创建它?

4 个答案:

答案 0 :(得分:12)

不,UILabel类没有实现NSCopying协议。如果您想为所有视图添加相同的视图,可能是自定义视图的子类化将是最好的方法。

答案 1 :(得分:0)

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

NSObject的Iphone文档清楚地说 -

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

答案 2 :(得分:-1)

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

答案 3 :(得分:-13)

copy继承的任何内容都可以使用NSObject方法,因此我的第一个停靠点就是尝试

UILabel *second = [first copy];

然而,这可能不会像预期的那样100%工作,一些UILabel属性可能无法按照你想要的方式复制。如果没有,您可以尝试使用NSCoding方法 - 对对象进行编码,然后将其解码为新对象?

尽管可能更容易手工完成;)

萨姆