我正在使用一个图像重的 iOS 应用程序,我发现自己一次又一次地输入几乎相同的行:
...
A016.image = [UIImage imageNamed:img21];
A017.image = [UIImage imageNamed:img21];
A018.image = [UIImage imageNamed:img21];
...
现在我问你:有没有办法可以将 UIImageViews 名称存储在数组或其他东西中?只是为了美化我非常丑陋的代码。/约翰
我正在使用一个图像重的 iOS 应用程序,我发现自己一次又一次地输入几乎相同的行:
...
A016.image = [UIImage imageNamed:img21];
A017.image = [UIImage imageNamed:img21];
A018.image = [UIImage imageNamed:img21];
...
现在我问你:有没有办法可以将 UIImageViews 名称存储在数组或其他东西中?只是为了美化我非常丑陋的代码。/约翰
当然,您可以简化类似的事情。但目前还不完全清楚上下文到底是什么。
如果你有一个数组中的所有图像视图,你可以做这样的事情。
// 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];
但我真的建议不要使用这样的索引变量名。
是的,您可以将 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];
}