美文网首页
关于viewWithTag的坑

关于viewWithTag的坑

作者: 黄_龙 | 来源:发表于2019-08-07 11:14 被阅读0次

1、superview可以viewWithTag直接访问到subview中对应tag的控件,所以如果要标记一个控件时,同一个superview下的subview,注意不要有存在冲突的相同tag的控件,建议根据view级数来定义,比如superview级的tag用100X,子View用200x,孙view用300x,依次类推

[view1 addsubview:view2]

[view2 addsubview:label]

label.tag=2000;

则[view2  viewWithTag:2000]和[view1 viewWithTag:2000]都能访问到label;

2、如果同一superview下存在相同的tag,会怎么样呢?

如,在上面代码中再加一句:

[view1 addsubview:button],且button.tag=2000,

此时[view1 viewWithTag:2000],得到的仍旧为label,而不是自身下面button;

viewWithTag得到的是最先设置tag为2000的那个控件(包含子view);网上大多说的,都是说优先从自身同等级查找,再找subview,都是想当然,没有经过代码验证的吧。

另外,tag=0为所有view的默认的tag,所以如果我们要标记一个view后面需要用viewWithTag来选取它时,tag的值必须设置大一点(如>1000),据说苹果文档上提到过一次,tag值较小的,如0-100为苹果保留使用, 而0就是保留着给自己这个view使用的。对于其它的view, 如scrollview, 则更上面的0,1,2 都可能会是保留值。

所以不妨定义 #define _initialTag  1000

需要标记的view.tag=_initialTag+iTag;

相关文章

  • 关于viewWithTag的坑

    1、superview可以viewWithTag直接访问到subview中对应tag的控件,所以如果要标记一个控件...

  • viewWithTag的坑

    我一直以为viewWithTag只会搜索子视图和本身,而且比较严谨。 但是今天debug时发现,当在子视图中找不到...

  • 关于viewWithTag:方法的小Tips

    关于viewWithTag:官方文档给出的说明为 This method searches the current...

  • 对于 viewWithTag获取对应的控件的学习总结

    viewWithTag:的使用 viewWithTag是如何获取到对应的subView的呢? 如图在view 上有...

  • viewWithTag

    方法概述: 一般在一个View下想调用其下多个子View时,为了方便可以通过给每个子View标记tag然后使用vi...

  • 小菜鸟之关于View-viewWithTag的一些事

    viewWithTag是包含自己的。如果父视图的tag是10;子视图的tag也是10;【父 viewWithTag...

  • 自定义递归

    以UIView的viewWithTag为例viewWithTag底层:先找子控件,不符合就再找子控件的子控件,再不...

  • viewWithTag:的原理

    我们知道一个view可以通过tag标记,并且父类的view可以通过viewWithTag: 找到对应的子view。...

  • viewWithTag用法

    viewWithTag 的作用就是根据 tag 属性获取到对应的 view、imageview、label 等等。...

  • VIewWithTag原理

    viewWithTag会去遍历子控件,包括本身的tag,进行比对,优先检查自己,所以传进来的tag 和 本身tag...

网友评论

      本文标题:关于viewWithTag的坑

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