5 Stimmen

Iteriere über alle Unteransichten eines bestimmten Typs

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.

11voto

Kyr Dunenkoff Punkte 8090

Probieren Sie es so aus, sollte sicher genug sein.

for (id subview in view.subviews) {
        if ([subview isMemberOfClass:viewType]) {
            block(subview);
        }
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X