自定义递归
2016-04-11 本文已影响37人
訷訷
以UIView的viewWithTag为例
viewWithTag底层:先找子控件,不符合就再找子控件的子控件,再不符合就子控件的子控件的子控件
例:先找子控件A1,不符合就再找子控件A1的子控件A11,再不符合就子控件A1的子控件A11的子控件A111和A112,都不符合才返回上一层找下一个控件A12和A13,还是不符合就返回上一层找A2和A3
-A11
-A111
-A112
-A12
-A13
-A2
-A3```
@implementation UIView
-
(UIView *)viewWithTag:(NSInteger)tag {
// 如果自己的tag符合要求,就返回自己
if (self.tag == tag) return self;// 遍历子控件,查找tag符合要求的子控件
for (UIView *subview in self.subviews) {
if (subview.tag == tag) return subview;UIView *resultView = [subview viewWithTag:tag]; if (resultView) return resultView;
}
// 找不到符合要求的子控件
return nil;
}
@end