假设我已经在IB中设置了几个UILabel并在代码中连接到IBOulets(label1,label2,label3,label4)
我如何在代码中创建这些变量名,以便我可以在循环中更改每个变量的文本,其中标签来自NSArray。
这是伪代码:
labelArray = [NSArray arrayWithObjects:@"this", @"array", @"has", @"a", @"random", @"amount", @"of", @"items", nil];
for (int i = 0; i < [labelArray count]; i++)
{
// labelx is the constructed name of the IBOutlet
lablex.text = [labelArray objectAtIndex:i];
}
如何在上面构建'labelx'?可以使用Blocks吗?
答案 0 :(得分:2)
你必须使用
在某个地方初始化数组labelArray = [NSArray arrayWithObjects:@"this", @"array", @"has", nil];
uiLabelArray = [NSArray arrayWithObjects:label1,label2,label3,nil];
然后
for (int i = 0; i < [uiLabelArray count]; i++)
{
[uiLabelArray objectAtIndex:i].text = [labelArray objectAtIndex:i];
}
答案 1 :(得分:2)
您可以使用键值编码(KVC)。它看起来像是:
[[self valueForKey:[NSString stringWithFormat:@"label%d", i]] setText:[labelArray objectAtIndex:i]];
可以找到更多信息here