how to get all UILabels within a UIView

subharb picture subharb · Apr 12, 2012 · Viewed 7.6k times · Source

I need a way to get all UILabels within a UIView without having to go through all the views within the UIView.

I have many other type of views, UIButtons, UIImageViews and it would be too long to go through all of them when I just need the UILabels.

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?

Answer

Paul.s picture Paul.s · Apr 12, 2012

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.