是否可以使用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?
由于
答案 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];
}