首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBOutletCollection问题

IBOutletCollection问题
EN

Stack Overflow用户
提问于 2014-08-23 04:23:28
回答 2查看 97关注 0票数 0

我试图引用存储在数组中的图像,然后为我的.hidden修改属性(如UIImages )。

在我的.h文件中我有一个IBOutletCollection(UIImageView) NSArray *starDisplay;

然后我通过控制/拖动链接图片。

然后,我希望能够运行一个for循环,然后运行starDisplay[i].hidden = YES; --但是这会产生错误。

任何建议(对于一个新来的人来说都很容易)将是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-23 04:52:27

我们需要指定隐藏的视图。条件将更改为

代码语言:javascript
复制
 for(int i = 0; i < [starDisplay count]; i++) {
     UIImageView *imageView = [starDisplay objectAtIndex:i];
     [imageView setHidden:YES];
 }
票数 0
EN

Stack Overflow用户

发布于 2014-08-23 05:22:24

确保在viewDidLoad期间访问集合中的对象。只有在这一点上才能设置出口。您可以使用基本的for循环遍历集合,但也会看到在野外使用的基于块的NSArray枚举。enumerateObjectsUsingBlock:方法接受一个块作为参数,它允许您访问要在要停止迭代的事件中设置的索引、对象和out参数。你的例子应该是这样的:

代码语言:javascript
复制
[outletCollection enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {
        imageView.hidden = YES;
    }];

块的第一个参数被记录为id,但是可以将其更改为UIImageView,这样就可以在没有Xcode警告的情况下设置hidden属性。

此外,NSArray有一个很好的方法,允许使用makeObjectsPerformSelector:withObject:进行一行操作。下面的示例如下所示:

代码语言:javascript
复制
[outletCollection makeObjectsPerformSelector:@selector(setHidden:) withObject:@(YES)];

当数组接收到makeObjectsPerformSelector:withObject:时,它将提供的选择器发送给每个对象,并使用它的第二个参数作为发送的选择器的唯一参数。因为makeObjects...需要一个对象,所以我们必须将BOOL封装为一个NSNumber。当setHidden:被调用时,它将为我们解封。

此外,查看NSHipster获得一些很好的建议,您可以阅读关于IBOutletCollection这里的文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25458417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档