如何使用 IBOutletCollection 将多个 UIImageViews 连接到同一个插座?

Posted

技术标签:

【中文标题】如何使用 IBOutletCollection 将多个 UIImageViews 连接到同一个插座?【英文标题】:How can I use IBOutletCollection to connect multiple UIImageViews to the same outlet? 【发布时间】:2013-04-05 14:46:56 【问题描述】:

我有 10 个 UIImageViews 做同样的事情(他们有一些用计时器改变图像的 void 方法)。 我的 UIImageView 是一个插座,我想将所有 10 个 imageView 连接到同一个插座,但界面生成器不允许我这样做。

我发现有一个解决方案,IBOutletCollection。谁能向我解释如何使用它来将多个 imageViews 连接到同一个插座?

【问题讨论】:

【参考方案1】:

声明一个属性来保存您的 imageView,然后像正常一样将它们连接到界面构建器中

@property (nonatomic, strong) IBOutletCollection(UIImageView) NSArray *imageViews;

这只是一个普通的NSArray,但是当 nib 被加载时,它会被你的 imageView 填充


更新

在您的视图控制器的头文件中,您需要添加上面的属性 - 它可能看起来像这样:

@interface MyViewController : UIViewController

@property (nonatomic, strong) IBOutletCollection(UIImageView) NSArray *imageViews;
// other properties

@end

现在在界面构建器中,您将所有 imageView 连接到这一属性。

现在我只使用imageViews 集合

for (UIImageView *imageView in self.imageViews) 
  imageView.image = someImage;

【讨论】:

但我的代码中只有一个 imageView,这就是我想要的。我想在代码中将此图像与情节提要视图中的多个图像视图连接起来。 您需要创建一个数组来保存对所有这些图像视图的引用。这样做的方法是使用IBOutletCollection,如上所示 但是如果只有 1 张图片,我需要填充哪些图片? 我真的不明白你的意思? @AndrewCr 是的,应该是。我们声明了一个NSArray,唯一对它感兴趣的对象是out viewController。您可以将weak 用于视图,因为它们将被其父视图保留。

以上是关于如何使用 IBOutletCollection 将多个 UIImageViews 连接到同一个插座?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态更改 UIButton 的位置

UIButton -setTitle: forState: 似乎不起作用

精简版—愤慨的小鸟

构建时没有调用方法但没有错误

IB Tap Gesture Recognizer 总是从 Outlet Collection 返回第一个视图

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”