如何使用For循环操作IBOutlet UIImageView对象



#的图像放置在一个视图使用Storyboard。我想用For循环编程地操作它们。但是不知道怎么做?

目前我正在使用以下代码:

@property (weak, nonatomic) IBOutlet UIImageView *img_level2;
@property (weak, nonatomic) IBOutlet UIImageView *img_level3;
@property (weak, nonatomic) IBOutlet UIImageView *img_level4;
@property (weak, nonatomic) IBOutlet UIImageView *img_level5;
@property (weak, nonatomic) IBOutlet UIImageView *img_level6;
@property (weak, nonatomic) IBOutlet UIImageView *img_level7;
...
...
...
_img_level2.image = [_img_level2.image convertToGrayscale];
_img_level3.image = [_img_level3.image convertToGrayscale];
_img_level4.image = [_img_level4.image convertToGrayscale];
_img_level5.image = [_img_level5.image convertToGrayscale];
_img_level6.image = [_img_level6.image convertToGrayscale];
_img_level7.image = [_img_level7.image convertToGrayscale];

现在,我想使用for循环,而不是一行一行地写它们。因为这个过程可能会被调用多次来调整大小和定位。

请指点,谢谢!

你可以定义一个outlet collection,而不是让每个按钮作为自己的UIButton属性,它本质上是一个数组,你将能够按照你想要的方式处理(例如,循环遍历它的所有项)。

你是怎么做到的?简单:

在你的代码中,用

替换所有的IBOutlet UIImageView...行:
IBOutletCollection(UIImageView) NSMutableArray *imgLevels;

在InterfaceBuilder上,给你的每个uiimageview一个不同的标签,将匹配它在IBOutletCollection中的索引。

最后,当你连接。xib或storyboard文件中的对象时,你会注意到它将出现在 references Outlet Collections部分,而不是像你习惯的那样出现在 references Outlets部分。

现在你有了一个数组,你可以用它来循环你的iboutlet,就像你循环一个"常规"NSArray一样。好运!

最新更新