0

我正在使用一个图像重的 iOS 应用程序,我发现自己一次又一次地输入几乎相同的行:

...
A016.image = [UIImage imageNamed:img21];
A017.image = [UIImage imageNamed:img21];
A018.image = [UIImage imageNamed:img21];
...

现在我问你:有没有办法可以将 UIImageViews 名称存储在数组或其他东西中?只是为了美化我非常丑陋的代码。/约翰

4

2 回答 2

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];

我真的建议不要使用这样的索引变量名。

于 2012-09-15T14:37:44.263 回答
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];

}
于 2012-09-15T14:36:48.477 回答