自定义递归

以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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。特别用于在数组内的参数变换后,再次求和所使用...
    碧影江白阅读 4,166评论 1 1
  • 本篇会讲解view的onMeasure的详细流程 onMeasure什么时候会被调用 onMeasure方法的作用...
    李庆雪阅读 31,648评论 1 50
  • 170702 伦敦在晴朗的时候还是很可爱的。 从伦敦眼俯瞰泰晤士河,然后乘船沿河游览。中午时分,躲在树荫里边吃午餐...
    XxXxXxN阅读 1,521评论 0 0
  • 已经几天没有更文了,也没有每天早晨运动,最近总是觉得没精神,特别瞌睡!于是越懒越瞌睡 今天和好友吃饭,我想去咖啡厅...
    神采飞扬的鱼阅读 2,720评论 0 2
  • 当你打开电视,无论是谍战剧还是动画片,甚至是广告都有爱情的影子;当你准备感受音乐时,你发现乐库被有关爱情的一切霸屏...
    月亮妖阅读 3,480评论 0 0