iOS,viewWithTag搜索机制
2015-07-12 14:15
351 查看
好久没写东西了。废话不多说。
看到方法时,我们很自然的想到,这个tag是类似uuid的东西,不同的view写入不同的tag,之后通过tag获得对应的view。
但是tag是我们自己手动添加的,如果有两个view的tag相同,我们通过viewWithTag获取的view到底是哪一个view呢?
要获得答案,我也没太想翻文档,觉得试验一下就好。
(由于在这发图,审核太麻烦,我就不发了(还是懒))
新建项目,打开IB,拖入几个view,层级结构是这样的:
View(self.view)
--View1
----View11
----View12
--View2
----View21
每个view都设置不同的背景颜色(没有设置过黑色),设置不同的tag(我的tag都是200开头,然后后面加数字)之后通过代码:
UIView *viewText = [self.view viewWithTag:2001];
viewText.backgroundColor = [UIColor blackColor];
查看哪一个view变黑了。
2.View1为2001,View11为2001,查找2001,找到View1.
3.View11为2001,View2为2001,查找2001,找到View11
4.View11为2001,View21为2001,查找2001,找到View11
我感觉查找的方式很简单,就是通过视图的层级结构查找,从最先添加的开始找,找到后就return了。简单说就是上面我画的层级结构,从上到下有5个view,查找方式就是从上到下找,找到就返回。
正式开始
iOS中获取一个想要的view的引用有很多方法,其中有一种是利用 viewWithTag:(NSInteger),填写tag即可获取tag。看到方法时,我们很自然的想到,这个tag是类似uuid的东西,不同的view写入不同的tag,之后通过tag获得对应的view。
但是tag是我们自己手动添加的,如果有两个view的tag相同,我们通过viewWithTag获取的view到底是哪一个view呢?
要获得答案,我也没太想翻文档,觉得试验一下就好。
(由于在这发图,审核太麻烦,我就不发了(还是懒))
新建项目,打开IB,拖入几个view,层级结构是这样的:
View(self.view)
--View1
----View11
----View12
--View2
----View21
每个view都设置不同的背景颜色(没有设置过黑色),设置不同的tag(我的tag都是200开头,然后后面加数字)之后通过代码:
UIView *viewText = [self.view viewWithTag:2001];
viewText.backgroundColor = [UIColor blackColor];
查看哪一个view变黑了。
测试过程
1.View1为2001,View2为2001,查找2001,找到View1.2.View1为2001,View11为2001,查找2001,找到View1.
3.View11为2001,View2为2001,查找2001,找到View11
4.View11为2001,View21为2001,查找2001,找到View11
我感觉查找的方式很简单,就是通过视图的层级结构查找,从最先添加的开始找,找到后就return了。简单说就是上面我画的层级结构,从上到下有5个view,查找方式就是从上到下找,找到就返回。
写在最后
纯粹个人臆断,没有官方支持,如果有不对的地方,欢迎指正。相关文章推荐
- iOS 字符属性NSAttributedString描述
- iOS 开发技巧 简单易用
- iOS阶段学习第19天笔记(协议-Protocol)
- iOS_16_开关控制器_modal_代码方法
- iOS加载StoryBoard方法
- iphone开发:为已经建立的项目添加coredata
- iOS在控制器导航栏右上角添加按钮
- iOS设置tableViewCell不能点击
- IOS 两个ViewController 之间传值
- iOS 在ScrollView 上加 同向滑动手势
- iOS播放音乐
- iOS: 目前天气API 整理
- ios本地通知
- iOS 中的 NSTimer
- 通知模式实现两个textField传值及模态视图——iOS开发
- IOS 获取系统照片和拍照
- iOS 返回一张可以随意拉伸不变形的图片 方法
- iOS 9 适配系列教程
- iOS开发之构建Widget
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现 -- 转