我正在使用图片重的iOS应用程序,我发现自己一次又一次地输入相同的行:
...
A016.image = [UIImage imageNamed:img21];
A017.image = [UIImage imageNamed:img21];
A018.image = [UIImage imageNamed:img21];
...
现在我问你:有没有办法将UIImageViews名称存储在数组中? 只是为了美化我非常难看的代码。 /约翰
答案 0 :(得分:0)
是的,您可以将UIImageViews放在一个数组中并将其放入for。
UIImageView * imageView1;
UIImageView * imageView2;
UIImageView * imageView3;
NSArray * imageViewsArray = [NSArray arrayWithObjects:imageView1,imageView2,imageView3,nil];
for (UIImageView * currentImageView in imageViewsArray) {
currentImageView.image = [UIImage imageNamed:img21];
}
答案 1 :(得分:0)
当然你可以简化这样的事情。但目前还不完全清楚上下文是什么。
如果您在阵列中拥有所有图像视图,则可以执行以下操作。
// Assume an NSArray called imageViews exists with all the UIImageView instances in it.
for (UIImageView *imageView in imageViews) {
imageView.image = [UIImage imageNamed:img21];
}
如果你的图像视图不在数组中并且实际上被称为A016,A017等,那么我建议你改变你的代码设计。这样的事情从来都不是一个好主意。它导致糟糕,难以维护的代码。如果这是某种图像表,请尝试将图像视图放在一个数组中。
话虽如此,有一些方法可以将这样的变量放在数组中。如果它们被声明为@properties或ivars,你可以做这样的事情。
NSMutableArray *imageViews = [NSMutableArray arrayWithCapacity:20];
for (int i = 0; i < 20; i++) {
NSString *variableName = [NSString stringWithFormat:@"A0%d", i];
UIImageView *imageView = [self valueForKey:variableName];
[imageViews addObject:imageView];
}
之后,您可以将数组保存为ivar并执行与上面相同的操作。
更加硬编码的版本是将图像视图自己简单地放入数组中:
NSArray *imageViews = [NSArray arrayWithObjects:..., A016, A017, A018,..., nil];
但我真的建议不要使用像这样的索引变量名。