模仿系统的`-(UIView *)viewWithTag:(NSInteger)tag;` 递归调用实现

模仿系统的-(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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值