【问题标题】:Access many UIImageView in a for loop在 for 循环中访问许多 UIImageView
【发布时间】:2012-05-25 15:38:30
【问题描述】:

我在一个 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;

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

我想要一个智能循环,所以如果用户删除 imgPic3imgPic4 图像将被移动到 imgPic3imgPic5 将移动到 imgPic4,而 imgPic5 赋值为 nil

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

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

【问题讨论】:

    标签: objective-c ios for-loop uiimageview


    【解决方案1】:

    使用NSMutableArray 来包含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];
    

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

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

    希望现在清楚

    【讨论】:

    • 感谢@jrtc27,但是在我玩完 NSMutableArray 之后,如何将 NSMutableArray 图像加载到 UIImageViews 中?
    猜你喜欢
    • 2015-01-27
    • 2011-10-25
    • 2016-03-27
    • 1970-01-01
    • 2016-02-12
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多