iphone - 在循环中更改多个视图的背景颜色

时间:2011-03-18 19:25:41

标签: iphone view background-color

我必须将具有相同基本名称的几个视图(如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 个答案:

答案 0 :(得分:4)

您尝试采用的方法可以使用JavaScript之类的语言,它允许您获取一串文本并在运行时将其发送到解释器。作为一种编译语言,Objective-C不允许这样做。

相反,您需要先将视图放在数组中,然后再遍历它们。最简单的方法是:

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