我有一个循环来计算数组中有多少项,然后我需要根据当时正在引用的索引创建一个UIView。例如,我有:
int itn2 = 0;
while(itn2 < [imageLinks count]){
//imageLinks is my NSMutableArray
NSURL * imageURL = [NSURL URLWithString:[imageLinks objectAtIndex:itn2]];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];
我需要我分配的UIImageView,其名称基于当前整数itn2(0),如:
[viewVar%i,itn2] = [[UIImageView alloc] initWithImage:image];
所以当循环从0变为2时,我将有3个UIViews,名为viewVar0,viewVar1,viewVar2,我该怎么做?我习惯了matlab,我可以做viewVar(itn2)。
答案 0 :(得分:1)
我认为你不能轻易地创建变量。
我使用一个可变数组来保存UIImageViews
:
NSMutableArray *imageViews = [NSMutableArray arrayWithCapacity:[imageLinks count]];
for(NSUInteger i=0; i < [imageLinks count]; i++) {
UIImage *image = [[UIImage imageWithData:[NSData dataWithContentsOfURL:[imageLinks objectAtIndex:i]]];
[imageViews addObject:[[UIImageView alloc] initWithImage:image]];
}
然后,使用[imageViews objectAtIndex:0]
作为第一个,等等。
如果您在应用中做了很多事情,可以添加如下宏:
#define IV(idx) (idx < [imageViews count] ? [imageViews objectAtIndex:idx] : nil)
为了写[someView addSubview:IV(0)]
或任何你需要的东西。但我不推荐它。
(注意:如果你不使用ARC,你需要autorelease
一些东西)