因为现在,viewWithTag实际上首先搜索自己,然后在整个子树中递归搜索所有子视图,以获得具有该标记的视图.
但是,如果我将子视图的标签设置为100,101等,然后再查找标签100,但是当前视图的父级将当前视图的标签设置为100?然后viewWithTag将返回当前视图而不是任何子视图.
如果代码是,那也很奇怪
[fooView viewWithTag: 123]
Run Code Online (Sandbox Code Playgroud)
为什么代码想要搜索包含fooView本身的子树?就好了,代码不知道fooView足以想要搜索它.或者换句话说,fooView被告知自己搜索......这很奇怪.一个观点不知道自己?(需要搜索才能找到自己?)
那么有没有办法只搜索子视图和宏观子视图(不搜索自己)?
利用其递归性质 -viewWithTag:
- (UIView *)viewWithTagNotCountingSelf:(NSInteger)tag
{
UIView *toReturn = nil;
for (UIView *subView in self.subviews) {
toReturn = [subView viewWithTag:tag];
if (toReturn) {
break;
}
}
return toReturn;
}
Run Code Online (Sandbox Code Playgroud)
编辑:这将比"宏观子视图"向下钻取:它将获得层次结构中不是自我的任何视图.这也是在一个类别中实现的UIView.
| 归档时间: |
|
| 查看次数: |
4939 次 |
| 最近记录: |