模仿系统的-(UIView *)viewWithTag:(NSInteger)tag;
递归调用
// 系统的遍历逻辑是 树形结构中, 一条一条的分支遍历完才遍历下一分支
A=0
B=0
B1=10
B2=0
C=10
C1=0
C2=0
D=0
//比如我们要找tag=10的, 它会先把所有的B遍历完,没找到才会继续找C, D, 所以找到的是B1, 而不是C
-(UIView *)viewWithTag:(NSInteger)tag{
// 如果自己的tag 符合要求, 就返回自己
if(self.tag == tag){
return self;
}
//遍历子控件(也包括子控件的子控件 ...) 直到找到符合条件的
for (UIView *subView in self.subViews){
// 查找子控件
UIView *resultView = [subView viewWithTag:tag];
if(resultView != nil){
return resultView;
}
}
// 没找到
return nil;
}