How can I use IBOutletCollection to connect multiple UIImageViews to the same outlet?

BalestraPatrick picture BalestraPatrick · Apr 5, 2013 · Viewed 31.6k times · Source

I have 10 UIImageViews which do the same thing (they have some void methods that change their image with a timer). My UIImageView is an outlet and I want to connect all the 10 imageViews to the same outlet, but interface builder doesn't allow me.

I found that there is a solution, IBOutletCollection. Can anyone explain to me how to use this to connect multiple imageViews to the same outlet?

Answer

Paul.s picture Paul.s · Apr 5, 2013

Declare a property to hold your imageView's and then hook them up in interface builder like normal

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

it's just a normal NSArray but when the nib is loaded it will be populated with your imageView's


Update

In the header file for you view controller which has the multiple imageView's on you need to add the property above - it may look something like this:

@interface MyViewController : UIViewController

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

@end

Now in the interface builder you connect all the imageView's to this one property.

enter image description here enter image description here

Now I just work with the imageViews collection

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