Как построить имена IBOutlet в коде, чтобы изменить их? - PullRequest
0 голосов
/ 03 августа 2010

Допустим, у меня есть несколько UILabel, которые были установлены в IB и подключены к 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' выше? Можно ли это сделать с помощью блоков?

Ответы [ 2 ]

2 голосов
/ 03 августа 2010

Вы можете использовать кодирование значения ключа (KVC). Это будет выглядеть примерно так:

[[self valueForKey:[NSString stringWithFormat:@"label%d", i]] setText:[labelArray objectAtIndex:i]];

Более подробную информацию можно найти здесь

2 голосов
/ 03 августа 2010

Вы должны инициализировать массив в каком-то месте, используя

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];
}
...