美文网首页
自定义递归

自定义递归

作者: 訷訷 | 来源:发表于2016-04-11 01:45 被阅读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

    相关文章

      网友评论

          本文标题:自定义递归

          本文链接:https://www.haomeiwen.com/subject/xkwblttx.html