0

是否可以在 FOR 语句中使用变量访问对象?

假设我已经宣布:

UIImageView *UIImageView0;
UIImageView *UIImageView1;
UIImageView *UIImageView2;

我在一个数组中有 3 个对象,如果数组中的 x 等于 2,我调用 FOR 语句,我希望它将 x 的值添加到 UIImageView 名称,如 UIImageView1 等

我试过了:

for (int x=0; x<[theArray count]; x++) {

UIImageView[x].image = etc....

}

但它给了我一个关于 UIImageView[x] 的错误

subscript requires size of interface 'UIImageView'

有任何想法吗?或者甚至可以使用 UIImageView 吗?

谢谢

4

3 回答 3

3

但是,数组中没有三个元素您有三个名称相似的自变量。如果您创建了一个实际的数组,其中包含三个变量的值,那么您可以使用for循环——事实上,语法就像您所展示的那样(当然,使用数组变量的实际名称。 )

你可以说

UIImageView * views[3] = {UIImageView0, UIImageView1, UIImageView2};

然后views[i].image在你的循环中使用,例如。

于 2012-07-18T11:09:53.070 回答
2

为了将您的 UIImageView 放入一个数组中,您需要创建一个实例 NSMutableArray(例如)

上面的代码没有显示任何数组,而是你有三个 ivars

UIImageView *UIImageView0;
UIImageView *UIImageView1;
UIImageView *UIImageView2;

并访问那些你会使用名称,而不是数组。

但是,如果您将它们放入 anNSMutableArray中,则可以使用

NSMutableArray array = [[NSMutableArray alloc] 
   initWithObjects:UIImageView0, UIImageView1, UIImageView2, nil];
[array objectAtIndex:i ]; // where i is 0,1 or 2

...
[array release];
于 2012-07-18T11:13:37.627 回答
0

您可以将 UIImageView 放到另一个数组中,然后从该数组中获取 UIImageView。

NSArray *imagesArray = @[imageView0, ...]

for(size_t i = 0; i<theArray.count; i++)
{
    UIImageView *imageView = [imagesArray objectAtIndex:i];
}

或者您可以使用 UIView 的“标签”属性,例如:

UIImageView *image0 = ...;
image0.tag = 100; //or 0 or something else
[self.view addSubview:image0];

然后在 FOR 语句中按标签获取 UIImageView:

for(size_t i = 0; i<theArray.count; i++)
{
    UIImageView *imageView = [self.view viewWithTag:100+i];
}
于 2012-07-18T11:13:10.073 回答