关于viewWithTag:方法的小Tips

关于viewWithTag:官方文档给出的说明为

This method searches the current view and all of its subviews for the specified view.

一般在一个View 下想调用其下多个子View时,为了方便可以通过给每个子View标记tag然后使用viewWithTag:tag方法直接调用。关于这个方法在使用中发现两个小Tips:

  1. viewWithTag检索tag的方法问题
    viewWithTag方法会对当前View和其子View进行搜索,查找符合tag的对象,但如果view和其多个子view中都含有相同tag值对象时,该方法会搜出哪一个呢?通过查找实验发现,ViewWithTag: 遵循深度优先,下层优先两个原则,返回第一个和给定tag相等的subview。这就导致了一个当一个view的多个subview的tag相同的时候,我们通过该方法得到的view可能并不是自己想要的。

  2. 给View设置的tag数不要太小
    对于tag值苹果将0-100留为自己使用。正如当使用[self viewWithTag:0]取View时得到的是View本身,因为tag值为0被苹果保留给自己View了。所以在设置子view的Tag值时,需要注意不要使用数值较小的Tag值,使用时建议加一个定值,可以有效避免因为tag值太小,而取到系统保留的view.

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,786评论 25 709
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,388评论 0 1
  • http://m.kugou.com/share/?chain=65XnqeerCV3&id=65XnqeerCV...
    夜蚺阅读 174评论 2 4
  • “清明时节雨纷纷,路上行人欲断魂。借问酒家何处有,牧童遥指杏花村。”又是一年的清明,项羽慵懒的坐在窗前,窗外正下着...
    浮若冷瞳阅读 853评论 1 1