独特区分 UIView

Posted

技术标签:

【中文标题】独特区分 UIView【英文标题】:Uniquely differentiate UIViews 【发布时间】:2016-02-18 21:58:20 【问题描述】:

我有一个应用程序,其中每个视图控制器都从 BaseViewController 子类化(从 UIViewController 子类化的自定义视图控制器)。我需要将某个视图控制器视图的子视图与BaseViewController 区分开来。该应用程序非常庞大,每个子视图不一定有tag。还有什么其他方法可以区分子视图?

【问题讨论】:

您可以查看子视图的任何属性或其类型。因此,您可以检查该类是否是一个按钮——您可以获取按钮的所有 x 值并选择最左边的一个。您可以查看按钮的标题文本 -- 等等。 @LouFranco 很抱歉造成误解,但当我的意思是区分时,我的意思是,我需要能够找到一个特定的视图,我的服务最终会告诉我我需要找到什么视图,除非我需要编写代码以基本上匹配前端的视图。 【参考方案1】:

应用程序非常庞大,每个子视图不一定有一个“标签”。还有哪些方法可以区分 subView?

这正是tag 属性的用途——区分其他相似的视图,例如按钮数组中的每个按钮。您应该只需要在任何给定时间区分由单个视图控制器管理的子视图;任何给定的视图只能由管理其父视图的视图控制器知道,因此应用程序的大小实际上不会改变 tag 属性的实用程序。

另一个区分视图的明显方法是使用它们是不同的对象这一事实,每个对象都有自己的地址。例如,假设您有一堆相似的视图代表座位表上的人,并且您想跟踪图表中每个人的视图。一种方法是让您的视图控制器维护一个NSDictionary,其中键是人,值是视图。

【讨论】:

我的意思是当应用程序非常庞大时,我现在不能去每个视图控制器并用标签标记子视图 另外,当我的意思是区分时,我的意思是,能够根据标签以外的“某事”选择一个特定视图,因为此时很难去标记我的子视图【参考方案2】:

XIB 和 Storyboard 文件只是 XML。您可以编写一个脚本来加载 XML,放入标签属性并保存。 XML 元素名称告诉您它是哪种视图(按钮、图像视图等)。

或者,如果您可以在每次加载时使用不同的标签,您可以在viewDidLoad 中以编程方式标记子视图

【讨论】:

它实际上是一个相当古老的应用程序,这意味着故事板不会参与某些子视图

以上是关于独特区分 UIView的主要内容,如果未能解决你的问题,请参考以下文章

pthread_mutex_unlock 如何区分线程?

科兰黛曼德(ChronoDiamond)真的是瑞士制造吗?如何区分真假?

比亚迪拥有独特的生产模式,这和其他厂商有啥区别?

谷歌:杀死那堆验证码

xcode - 移动手势

UIScrollView 子视图不会调整大小