0

我在一个 UIView 中有 5 个 UIImageView,我将 UIImageView 命名如下:

@property (retain, nonatomic) IBOutlet UIImageView *imgPic1;
@property (retain, nonatomic) IBOutlet UIImageView *imgPic2;
@property (retain, nonatomic) IBOutlet UIImageView *imgPic3;
@property (retain, nonatomic) IBOutlet UIImageView *imgPic4;
@property (retain, nonatomic) IBOutlet UIImageView *imgPic5;

假设所有 UIImageView 都填充了图像,并且用户可以在运行时删除任何 UIImageView,我想知道如何实现以下场景?

我想要一个智能循环,所以如果用户删除imgPic3imgPic4图像将移动到imgPic3imgPic5将移动到imgPic4imgPic5分配给 nil

imgPic3.img = imgPic4.img;
imgPic4.img = imgPic5.img;
imgPic5.img = nil;

如果被删除,我可以为每个 UIImageView 硬编码 5 个逻辑场景,但我想以一种智能的方式进行操作,这样即使我有 100 个 UIImageView 也能正常工作。

4

1 回答 1

1

使用 anNSMutableArray来包含 5 个UIImageView指针。然后当图像视图 x 被删除时,执行:

for (int i = imgViewNumber; i < [myImageViewArray count]-1; i++) {
    [[myImageViewArray objectAtIndex:i] setImage:[[myImageViewArray objectAtIndex:i+1] image]];
}
[[myImageViewArray lastObject] setImage:nil];

编辑:
要将您UIImageView的 s 添加到数组中:

  1. 不要将每一个都定义为属性或 iVar - 只有数组的保留属性。
  2. 使用for (int i = 0; i < numImageViews; i++)循环添加所有图像视图,并在调用的同时addSubview:调用[myImageViewArray addObject:imageView]
  3. 然后,如果您想为特定的图像视图设置图像,请调用[[myImageViewArray objectAtIndex:imageViewNumber] setImage:image](请记住,对于图像视图 1,imageViewNumber 应该为 0)

希望这现在很清楚

于 2012-05-25T16:01:22.767 回答