iOS,viewWithTag搜索机制

好久没写东西了。废话不多说。

正式开始

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,查找方式就是从上到下找,找到就返回。

写在最后

纯粹个人臆断,没有官方支持,如果有不对的地方,欢迎指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 23:12:56

iOS,viewWithTag搜索机制的相关文章

IOS 阶段学习第25天笔记(IOS沙盒机制介绍)

IOS学习(OC语言)知识点整理 一.IOS沙盒机制介绍 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访问(extension) 2)extension是ios8新开放的一种对几个固定系统区域的拓展机制,它可以在一定程度上弥补ios的沙盒机制对应用间的通信限制 3)应用沙盒一般包括以下几个文件目录: 1.应用程序包:包含所有资源文件和可执行文件 2.Documents:保存应用

iOS的绘图机制

iOS的视图机制,提到了iOS的视图框框可以通过drawRect自己绘图,每个view的layer(CALayer)就像一个视图的投影,其实我们也可以来操作它定制一个视图,例如半透明圆角背景的视图. 要完成自己在视图上绘图,大家一定要了解一下iOS的绘图机制了.今天我试图也通俗地说一下iOS的绘图. 在iOS中绘图可以有两种方式: 1,采用iOS的核心图形库. 2,采用OpenGL ES. 这两个库的不同我简单介绍一下: 前者主要是通过核心图形库和UIKit进行封装,其更加贴近我们经常操作的视图

ios 沙盒机制

1.IOS沙盒机制 在ios系统中,系统都为每一个app创建一个资源目录,这个目录称之为沙盒 .里面存放着图片,属性文件plist,bundle,nib文件等. 其特点如下: 1.每个应用都有属于自己的存储空间 -- 沙盒. 2.每个应用都只能访问自己的沙盒,不能访问别的沙盒 3.每个应用的文件操作必须在沙盒内,比如数据库存储,文件存储等 2.沙盒目录结构 Documents 应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 --- Caches 存储应用程序再次启动所需的信

iOS消息转发机制

iOS消息转发机制 “消息派发系统”(message-dispatch system) 若想令类能够理解某条消息,我们必须实现出对应的方法才行.但是,在编译器向类发送其无法解读的消息时并不会报错,因为在运行期可以继续向类中添加方法,所以编译器在编译时还无法确定类中到底会不会有某个方法的实现.当对象接收到无法解读的消息时,就会启动“消息转发”机制,我们可以经由此过程告诉对象应该如何处理未知消息. 消息转发分为两个阶段.第一阶段先征询接收者所属的类,看其是否能动态添加方法,已处理当前这个“未知的选择

ios的安全机制

ios的安全机制 iOS是由苹果公司为iPhone开发的操作系统.它主要是给iPhone.iPod touch以及iPad使用.就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的.原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS.iOS的系统架构分为四个层次:核心操作系统层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),可轻触层(the Co

ios后台传输机制

http://www.appcoda.com/background-transfer-service-ios7/ http://www.raywenderlich.com/51127/nsurlsession-tutorial https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html ios后台传输机制

Linux基础:Linux(BASH)命令执行和搜索机制

程序是如何被执行的? 当操作系统启动之后,就会等待用户操作.那么用户是如何与操作系统沟通呢?如何触发程序执行呢? 通常,与操作系统交互,有两种实现方式:CLI(command line interface); CUI(graphic user interface). 比如,当我们启动 windows系统,我们想看电影,听音乐,那么我们必须去触发程序的快捷方式,以启动程序. 同理,Linux要与kernel交互,必须通过一个shell的程序.Linux命令的执行必须依赖于Shell命令解释器.Sh

ios 的通知机制

ios 的通知机制,包括通知发布,通知监听,通知移除. 1.通知发布 要发布通知前,要先创建通知对象,一个通知对象包括 通知发布者:发布通知到通知中心: 通知中心:接收通知发布者发布的通知,并转发给通知接收者. 通知接受者:接收从通知中心发布的通知. 一个通知对象要包含的内容: 1. (NSString *)name; // 通知的名称 2. (id)object; // 通知发布者 3. (NSDictionary *)userInfo; // 一些额外的信息(通知发布者传递给通知接收者的信息

【转】Linux(BASH)命令搜索机制

原文网址:http://www.mike.org.cn/articles/linux-linux-bash-command-search-mechanism/ 转自:Eric Cheung: Linux(BASH)命令搜索机制 本文假设的环境是GNU/Linux,且shell是BASH; 注意: 另外,我们讨论的前提是当你键入一个命令时并没有指定该命令的路径, 举例来说就是我们键入的命令是以commandname的形式而不是/path/commandname或./path/commandname