我试图引用存储在数组中的图像,然后为我的.hidden修改属性(如UIImages )。
在我的.h文件中我有一个IBOutletCollection(UIImageView) NSArray *starDisplay;
然后我通过控制/拖动链接图片。
然后,我希望能够运行一个for循环,然后运行starDisplay[i].hidden = YES; --但是这会产生错误。
任何建议(对于一个新来的人来说都很容易)将是非常感谢的。
发布于 2014-08-23 04:52:27
我们需要指定隐藏的视图。条件将更改为
for(int i = 0; i < [starDisplay count]; i++) {
UIImageView *imageView = [starDisplay objectAtIndex:i];
[imageView setHidden:YES];
}发布于 2014-08-23 05:22:24
确保在viewDidLoad期间访问集合中的对象。只有在这一点上才能设置出口。您可以使用基本的for循环遍历集合,但也会看到在野外使用的基于块的NSArray枚举。enumerateObjectsUsingBlock:方法接受一个块作为参数,它允许您访问要在要停止迭代的事件中设置的索引、对象和out参数。你的例子应该是这样的:
[outletCollection enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {
imageView.hidden = YES;
}];块的第一个参数被记录为id,但是可以将其更改为UIImageView,这样就可以在没有Xcode警告的情况下设置hidden属性。
此外,NSArray有一个很好的方法,允许使用makeObjectsPerformSelector:withObject:进行一行操作。下面的示例如下所示:
[outletCollection makeObjectsPerformSelector:@selector(setHidden:) withObject:@(YES)];当数组接收到makeObjectsPerformSelector:withObject:时,它将提供的选择器发送给每个对象,并使用它的第二个参数作为发送的选择器的唯一参数。因为makeObjects...需要一个对象,所以我们必须将BOOL封装为一个NSNumber。当setHidden:被调用时,它将为我们解封。
此外,查看NSHipster获得一些很好的建议,您可以阅读关于IBOutletCollection的这里的文章。
https://stackoverflow.com/questions/25458417
复制相似问题