修改 viewWithTag

Posted

技术标签:

【中文标题】修改 viewWithTag【英文标题】:Modifying viewWithTag 【发布时间】:2012-08-07 08:46:21 【问题描述】:

在我的 iPad 应用程序中,我有一个带有多个子视图的 UIView,每个子视图都有不同的标签值。 我想搜索具有特定标签值的子视图。目前我正在使用 for() 循环来循环查找具有所需标记的特定UIView

 for (int i=0; i<[[myView subviews] count]; i++) 

    if ([[[myView subviews] objectAtIndex:1] tag]==1) 

        //assign that view

    

我只是想知道,[myView viewWithTag:1] 是否也使用相同的方式来查找特定的标记视图以及哪种方式更快

【问题讨论】:

【参考方案1】:

不完全一样,viewWithTag 使用深度优先搜索来查找子视图。换句话说,它递归地扫描所有子视图,直到找到一个标签等于参数的UIView

另见Apple official Documentation

【讨论】:

【参考方案2】:

这取决于您的代码。假设您动态创建更多数量的子视图(例如超过 10 个),您可以使用您现在编写的内容。假设您知道子视图是什么,或者您创建的子视图数量较少(例如少于 10 个),那么您可以使用 [myView viewWithTag:1]

【讨论】:

以上是关于修改 viewWithTag的主要内容,如果未能解决你的问题,请参考以下文章

8关于viewWithTag

为啥将“viewWithTag”与“dequeueReusableCellWithIdentifier”一起使用?

为啥 tableview rowAtindexpath 中的 viewWithTag 总是为零?

关于viewWithTag的一点说明

为啥我不能使用 StoryBoard 从 viewWithTag 方法访问嵌套的 UIView?

尝试通过 viewWithTag 获取 UIImageView 引用后崩溃