通常我们使用viewWithTag如下情形:

如果我们用了一个父View,上面放了多个子view, 每个子view都通过从0开始的Tag值来进行标志,以便于后期在像View上直接使用viewWithTag:tag值来取各个子View

而在用[父view viewWithTag:0]取到的view, 发现不是子view, 而是这个父view,

后来才想起苹果文档上提到过一次,tag值较小的,如0-100为苹果保留使用, 而0就是保留着给自己这个view使用的。

对于其它的view, 如scrollview, 则更上面的0, 1,2 都可能会是保留值。

所以在使用viewWithTag时, 和在设置子view的Tag值时, 需要注意不要使用数值较小的Tag值,使用时建议加一个定值

#define TileInitialTag          10000

使用时,如下

curTileView_0.tag = TileInitialTag + emptyPlaceIndex_0;

这样就可以有效地避免因为tag值太小,而取到系统保留的view.

说法二:

有人在用到viewWithTag的方法时发现了一个Tag的问题于是做了一个小测试:

 
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

btn.backgroundColor = [UIColor blackColor];

btn.tag = 0;

[self.mView addSubview:btn];

[btn release];

[self.mView viewWithTag:0].backgroundColor = [UIColor whiteColor];

结果是self.mView的背景颜色变为白色了,调试发现self.mView的tag也为0。查找文档发现UIVIew的默认tag值就是0.而[self.mView viewWithTag:0]会优先查找函数调用者本身的tag,如果函数调用者符合条件就会返回函数调用者本身,所以不能查找到btn。

现在把代码改一下

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

btn.backgroundColor = [UIColor blackColor];

btn.tag = 0;

self.mView.tag = 1;

[self.mView addSubview:btn];

[btn release];

[self.mView viewWithTag:0].backgroundColor = [UIColor whiteColor];

结果便是btn的背景颜色变为白色,也就是viewWithTag查找到了btn。

感谢分享

关于viewWithTag的一点说明的更多相关文章

  1. 关于自己写C++的一点风格

    现在,我学了很长时间的C++,但是自己就是无法精通.许多知识是入门书上没有的.现在写C++最重要的就是风格问题. 我现在的C++风格: 把自己所有的东西都放在一个名称空间下. 没有全局的函数,有的函数 ...

  2. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  3. 一点公益商城开发系统模式Ring Buffer+

    一个队列如果只生产不消费肯定不行的,那么如何及时消费Ring Buffer的数据呢?简单的方案就是当Ring Buffer"写满"的时候一次性将数据"消费"掉. ...

  4. SVM一点心得体会

    支持向量机的学习说是刚刚开始,又不合理,只能说隔了很长的时间再看,终于在分类这块的层面上有了新的认识. 总的来说,支持向量机分为线性支持向量机和非线性支持向量机,线性支持向量机又可以分为硬间隔最大化线 ...

  5. [网站性能1]对.net系统架构改造的一点经验和教训

    文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 ...

  6. 关于js的回调函数的一点看法

    算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做nativ ...

  7. .NET支持多平台后的一点拙见

    我们目前对.NET的理解大部分可以归纳为:起初它是Java平台(注意是平台,不要跟Java语言搞混淆)的一个克隆品,后来慢慢演变,有了自己的特性.由于Java平台最显著的特点就是“平台独立性”(或者说 ...

  8. 每天多一点(2016.12.04)》Javascript隐式转换

    乱想 javascript为什么需要隐式转换?如果没有会出现什么情况? 找了一圈没有看到关于这个的讨论,只好自己研究了,可能不一定正确,自行辨知. 郁闷就是郁闷在好好的,为什么要搞个隐式转换,一般来讲 ...

  9. 封装RabbitMQ.NET Library 的一点经验总结

    这篇文章内容会很短,主要是想给大家分享下我最近在做一个简单的rabbitmq客户端类库的封装的经验总结,说是简单其实一点都不简单.为了节省时间我主要按照Library的执行顺序来介绍,在你看来这里仅仅 ...

随机推荐

  1. uml(1)--概述

    面象对象的课程已经学到UML建模部分, 为了应付老师布置了的作业,须重新学习UML 故趁此机会将自己所学,所看做个记录,不为点赞, 只为加深记忆,加深理解…不是都说写一遍等于读十遍嘛…… 对于UML ...

  2. vijos1782借教室

    描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望 ...

  3. java实验7-多线程编程

    1 利用Thread和Runnable创建线程 [实验目的] (1)理解用实现Runnable接口的方法实现多线程. (2)掌握线程优先级的设置. (3)加深对线程状态转换的理解. [实验要求] 要求 ...

  4. Layer中自定义属性的动画

    转载自:http://blog.jobbole.com/69211/ 默认情况下,CALayer 及其子类的绝大部分标准属性都可以执行动画,无论是添加一个 CAAnimation 到 Layer(显式 ...

  5. asp.net操作xml(增删查改)

    asp.net操作xml 1.xml文档Products.xml <?xml version="1.0" encoding="utf-8"?> &l ...

  6. .net中的特性

    本文来之:http://hi.baidu.com/sanlng/item/afa31eed0a383e0e570f1d3e 在一般的应用中,特性(Attribute,以称为属性)好像被使用的不是很多. ...

  7. (转)CSS 禁止浏览器滚动条的方法

    1.完全隐藏 在里加入scroll="no",可隐藏滚动条:    这个我用的时候完全没效果,不知道是什么原因!不过好多人说这么用可以,大概是用的位置不一样吧   2.在不需要时隐 ...

  8. (转)将wcf 以webservice的方式调用

    将wcf 以webservice的方式调用 问题:a公司使用wcf 发布服务(.net Framework 3.0 or 3.5),b公司需要使用a公司发布的服务 ,但b公司目前阶段只使用.net F ...

  9. (转).net程序员转战android第二篇---牛刀小试

    上篇说道如何搭建android的开发环境,这一篇我们将牛刀小试一下, 完成我们第一个android APP应用. 我就从新建项目说起吧. 首先打开Eclipse,选择顶部的File(文件)——new( ...

  10. Linq 关键字

    from var lowNums = from num in numbers            where num < 5            select num; numbers 是数 ...