我必须将具有相同基本名称的几个视图(如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?
}
感谢。
答案 0 :(得分:4)
您尝试采用的方法可以使用JavaScript之类的语言,它允许您获取一串文本并在运行时将其发送到解释器。作为一种编译语言,Objective-C不允许这样做。
相反,您需要先将视图放在数组中,然后再遍历它们。最简单的方法是:
NSArray *views = [NSArray arrayWithObjects:color1, color2, color3, color4, nil];
for (UIView *v in views) {
v.backgroundColor = theColor;
}