使用FOR语句中的变量访问字符串名称

时间:2012-07-18 11:06:46

标签: iphone objective-c ios

是否可以使用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?

由于

3 个答案:

答案 0 :(得分:3)

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

你可以说

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

然后在循环中使用views[i].image

答案 1 :(得分:2)

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

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

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

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

如果您将它们放入NSMutableArray,则可以使用

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

...
[array release];

答案 2 :(得分:0)

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

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

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

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

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

然后在FOR语句中获取UIImageView by标记:

for(size_t i = 0; i<theArray.count; i++)
{
    UIImageView *imageView = [self.view viewWithTag:100+i];
}
相关问题