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

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

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

【问题讨论】:

    标签: ios objective-c xcode uiimageview iboutletcollection


    【解决方案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 用于视图,因为它们将被其父视图保留。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2014-04-04
    相关资源
    最近更新 更多