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