填充UILabel文本而不链接IBOutlet

时间:2010-06-24 12:12:32

标签: iphone ipad interface-builder

我想在IB创建的不同UIViews上填写几个UILabel,文本相同。

现在,我正在将每个标签与IBOutlet连接,并使用常量文件中定义的常量字符串以编程方式填充文本。

我想要的是避免与IBOutlet的连接,以便我可以在IB中链接所需的字符串标记。

我可以这样做吗?也许只有一种语言的本地化(ibtool)?

3 个答案:

答案 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;
        }
    }
}