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 を削除できるとしましょう。次のシナリオをどのように達成できるか知りたいですか?

ユーザーがimgPic3を削除すると、imgPic4画像がimgPic3に移動され、imgPic5がimgPic4に移動され、imgPic5が 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

  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 に答える