Iterate over all subviews of a specific type

Итерация по всем UIViews в подвидах класса и последующая проверка типа в цикле с помощью isKindOfClass сделали мой код избыточным. Поэтому я написал следующий метод, который выполняет блок для каждого вложенного вида.

@implementation Util

+ (void)iterateOverSubviewsOfType:(Class)viewType 
                   view:(UIView*)view
                   blockToExecute:(void (^)(id subview))block
{
    for (UIView* subview in view.subviews) {
        if ([subview isKindOfClass:viewType]) {
            block(subview);
        }
    }
}

@end

Блок, передаваемый в этот метод, принимает аргумент типа id. Тип, используемый здесь, конечно же, должен быть тем же, что передан в качестве первого аргумента. Однако пока я не придумал, как сделать это более безопасным для типов.

5
задан Nils 25 January 2012 в 09:26
поделиться