Итерация по всем 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
. Тип, используемый здесь, конечно же, должен быть тем же, что передан в качестве первого аргумента. Однако пока я не придумал, как сделать это более безопасным для типов.