我想在IB创建的不同UIViews上填写几个UILabel,文本相同。
现在,我正在将每个标签与IBOutlet连接,并使用常量文件中定义的常量字符串以编程方式填充文本。
我想要的是避免与IBOutlet的连接,以便我可以在IB中链接所需的字符串标记。
我可以这样做吗?也许只有一种语言的本地化(ibtool)?
答案 0 :(得分:4)
我想你可以继承UILabel:
@interface MyLabel : UILabel {
}
@end
@implementation MyLabel
- (void) awakeFromNib {
self.text = @"MyText"; // load text from your constants file here
}
@end
并在IB中将类设置为MyLabel。如果你想在多个标签上使用多个字符串,可以使用IB标签扩展它并在awakeFromNib中检查它们(将它们与常量文件中的键匹配)。
答案 1 :(得分:1)
答案 2 :(得分:0)
假设它们都在同一个NIB文件中,您可以遍历NIB的内容以查找UILabel实例,然后将文本分配给存在的标签。对于更精细的控制,请使用Interface Builder标记并为要修改的标签指定编号。
NSString *myStr = @"Bob";
NSArray *contents = [[NSBundle mainBundle] loadNibNamed:@"NameOfViewNib" owner:self options:NULL];
for(id nibItem in contents) {
if ([nibItem isKindOfClass:[UILabel class]]) {
UILabel *lbl = (UILabel*)nibItem;
/* Optionally check for a particular tag if you want to filter them */
if (lbl.tag == 1) {
lbl.text = myStr;
}
}
}