Das Iterieren über alle UIViews in den Subviews einer Klasse und das Überprüfen des Typs in der Schleife mit isKindOfClass
ließ meinen Code redundant erscheinen. Daher habe ich die folgende Methode geschrieben, die einen Block für jede Subview ausführt.
@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
Der diesem Methode übergebene Block nimmt ein Argument vom Typ id
an. Der hier verwendete Typ sollte natürlich derselbe sein wie der, der als erstes Argument übergeben wurde. Aber bisher habe ich noch nicht herausgefunden, wie ich dies sicherer machen kann.