1

我正在使用下面的代码在单个单元格内容视图中添加图像数量。

    cell.imageView1.image = [UIImage imageNamed:@"testImg1"];
            cell.imageView2.image = [UIImage imageNamed:@"testImg2"];
            cell.imageView3.image = [UIImage imageNamed:@"testImg3"];
            cell.imageView4.image = [UIImage imageNamed:@"testImg4"];
            cell.imageView5.image = [UIImage imageNamed:@"testImg5"];  
.............................  
............................  
cell.imageView20.image = [UIImage imageNamed:@"testImg20"];  

如何使用 for 循环和 stringWithFormat 使我的代码看起来简洁,例如:

for(imageCounter = 1; imageCounter <21, imageCounter++)  
{  
cell.imageView(imageCounter).image = [UIImage imageNamed:@"testImg(imageCounter)"];  
}  

有什么建议吗?

4

4 回答 4

2

要到达循环内不同图像视图的引用,您必须将它们放在数组中或标记它们,而不是您可以去:

  NSArray *cellImageViews;
  for(int imageCounter = 1; imageCounter < 21; imageCounter++)
  {
    [[cellImageViews objectAtIndex:imageCounter-1] setImage:[UIImage imageNamed:[NSString stringWithFormat:@"testImg%d", imageCounter]]];
  }

或者

  for(int imageCounter = 1; imageCounter <21; imageCounter++)
  {
    [((UIImageView *)[cell viewWithTag:imageCounter]) setImage:[UIImage imageNamed:[NSString stringWithFormat:@"testImg%d", imageCounter]]];
  }
于 2012-05-04T10:34:55.937 回答
1
UIImageView *img[20];//ur array of images

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

for (int i=0; i<20; i++) {

        //set frame  every time as ur requirement

        img[i].image = [UIImage imageNamed:[NSString stringWithFormat:@"testImg%d",i+1]];
        [cell.contentView addSubview:img[i]];
    }
}

我认为这段代码可以完美地 用于更多示例以获得更好的描述。

于 2012-05-04T10:23:49.450 回答
1

您使用了错误的逻辑。不能这样使用。而不是这样

for(imageCounter = 1; imageCounter <21, imageCounter++)
{
 cell.imageView(imageCounter).image = [UIImage imageNamed:@"testImg%d,(imageCounter)"];
}

你应该使用这个: -

yourImageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, width, height)];

for(imageCounter = 1; imageCounter <21, imageCounter++)
{
 [yourImageView setImage:[UIImage imageNamed:@"testImg%d",imageCounter]];
 cell.imageView = yourImageView;
}

试试这个。希望它会帮助你谢谢:)

于 2012-05-04T10:26:36.360 回答
1

嗨,您应该首先将所有图像放在 cellForRowAtIndexPath 方法中的数组中

NSMutableArray *imageArr=[[NSMutableArray alloc]initWithObject:cell.imageView1,cell.imageView2.....];

然后执行以下操作:

for(imageCounter = 1; imageCounter <21, imageCounter++) {



[imageArr objectAtindex:imageCounter].image = [UIImage imageNamed:[NSString stringwithformat:@"testImg%d", imageCounter]];
}

如果您需要任何澄清,请告诉我

于 2012-05-04T10:39:19.947 回答