在类的子视图中循环遍历所有UIView,然后在循环中使用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
类型的参数。这里使用的类型当然应该与第一个参数传递的类型相同。但是到目前为止,我还没有找到一种使其更加类型安全的方式。
typeof(class) subview
,但这将使您的方法依赖于某些外部变量。 - Kyr Dunenkoff