迭代一个类的子视图中的所有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
的参数。这里使用的类型当然应该与第一个参数一样。但到目前为止,我还没有找到一种方法来使这种类型更安全。
答案 0 :(得分:11)
这样试试,应该足够安全。
for (id subview in view.subviews) {
if ([subview isMemberOfClass:viewType]) {
block(subview);
}
}