Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get all UILabels within a UIView

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?

like image 455
subharb Avatar asked Apr 12 '12 16:04

subharb


1 Answers

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.

like image 85
Paul.s Avatar answered Sep 28 '22 14:09

Paul.s