iphone - изменение цвета фона нескольких просмотров в цикле - PullRequest
1 голос
/ 18 марта 2011

Мне нужно изменить цвет фона нескольких видов, имеющих одинаковое базовое имя, например color1, color2, color3 и т. Д., На один и тот же цвет

Я мог бы просто сделать что-то вроде

color1.backgroundColor = theColor;
color2.backgroundColor = theColor;
color3.backgroundColor = theColor;
color4.backgroundColor = theColor;
...

но я бы предпочел сделать это более элегантно, используя цикл, что-то вроде

NSString *baseName = @"color";
for (int i=1; i<numberOfViews; i++) {
  NSString *tempName = [NSString stringWithFormat:@"%@%d", baseName, i];
  // now that I have the correct name of the view as a string on tempName
  // how do I reference the view which name is on tempName, so I can change its color?
}

спасибо.

1 Ответ

4 голосов
/ 18 марта 2011

Подход, который вы пытаетесь использовать, будет работать на языке, подобном JavaScript, который позволяет вам взять строку текста и отправить ее интерпретатору во время выполнения. Как скомпилированный язык, Objective-C не позволяет этого.

Вместо этого вам сначала нужно поместить свои представления в массив, а затем их можно перебирать. Самый простой способ будет:

NSArray *views = [NSArray arrayWithObjects:color1, color2, color3, color4, nil];
for (UIView *v in views) {
    v.backgroundColor = theColor;
}
...