how to get all UILabels within a UIView

ios, objective-c, subviews, uilabel, uiview

Solution

Create an `NSArray` ivar which you can add all the `UILabel`'s to.

If you do it in code then as you create the `UILabel` just do

NSMutableArray *labels = [[NSMutableArray alloc] init];

// Repeat this for al labels
UILabel *label = [[UILabel alloc] in...
[labels addObject:label];

// Then
self.labels = [labels copy];

If you use IB the declare your property like this

@property (nonatomic, strong) IBOutletCollection(UILabel) NSArray *labels;

and connect all the labels up to this.

Problem

I need a way to get all `UILabel`s within a `UIView` without having to go through all the views within the `UIView`. I have many other type of views, `UIButton`s, `UIImageView`s and it would be too long to go through all of them when I just need the `UILabel`s. I'm trying to avoid something like this: ``` for (UIView *view in myView.subviews) { if([view isKindOfClass:[UILabel class]]) { UILabel *lbl = (UILabel*)view; } } ``` Is it possible or am I dreaming?

Original source