我想用相同的文本在用IB創建的不同UIViews上填充多個UILabel。填充UILabel文本而不連接IBOutlet
現在我正在做它將每個標籤連接到一個IBOutlet並以常量文件上定義的常量字符串以編程方式填充文本。
我想要的是避免與IBOutlet的連接,以便我可以鏈接IB中所需的字符串標記。
我可以這樣做嗎?也許只有一種語言的本地化(ibtool)?
我想用相同的文本在用IB創建的不同UIViews上填充多個UILabel。填充UILabel文本而不連接IBOutlet
現在我正在做它將每個標籤連接到一個IBOutlet並以常量文件上定義的常量字符串以編程方式填充文本。
我想要的是避免與IBOutlet的連接,以便我可以鏈接IB中所需的字符串標記。
我可以這樣做嗎?也許只有一種語言的本地化(ibtool)?
我想你可以繼承的UILabel:
@interface MyLabel : UILabel {
}
@end
@implementation MyLabel
- (void) awakeFromNib {
self.text = @"MyText"; // load text from your constants file here
}
@end
,並設置類IB到MyLabel。如果你想要在多個標籤上使用多個字符串,可以使用IB標籤擴展它,並在awakeFromNib中檢查它們(將它們匹配到常量文件中的一個鍵)。
這不完全是我在想什麼,但這是一個好方法。謝謝約翰。 – emenegro 2010-06-25 08:26:22
其中一個方法可以是這樣的:
即使你有不同的筆尖或查看重複這種方法來獲取詳細
假設它們都在同一個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;
}
}
}
如果您需要爲常量文件的每次更改重新構建,那麼可以嗎?對於單個「會話」或應用程序的整個生命週期常量是常量嗎?你真的試圖本地化您的應用程序,或者這只是一個類似的情況的例子嗎? – Steve 2010-07-22 21:31:24