您如何管理 iOS 项目中的视图标签? [关闭]

Posted

技术标签:

【中文标题】您如何管理 iOS 项目中的视图标签? [关闭]【英文标题】:How do you manage view tags in your iOS project? [closed] 【发布时间】:2014-01-23 09:48:24 【问题描述】:

我有一个 ios 应用程序,它使用了一些带有大量元素的视图控制器。我在界面构建器中构建了视图控制器(在故事板中)。对于一些关键元素(登录按钮、重要文本等),我创建了一个 IBOutlet 以便能够在我的代码中使用这些元素(主要调整文本/图形)。 对于其他一些我只需要快速修复的情况(例如,我以编程方式显示和隐藏的活动指示器),我选择不创建 IBOutlet,而是给它们一个标签号并通过viewWithTag:(NSInteger) 方法访问它们。

这似乎对我有用(这只是我的第二个 iOS 项目,所以这样做可能是完全错误的)。但是现在视图控制器变得更加复杂,我发现很难记住我已经使用了哪些数字作为标签。除了遍历所有元素并检查它们的标签之外,还有什么方法可以跟踪这一点?

也许以这种方式使用标签是错误的,在这种情况下也很好。我可以将它们全部查找一次,然后为我现在使用标签的所有情况创建 IBOutlets。

【问题讨论】:

我没有。你不应该使用它们......永远。如果您依赖标签来访问不同的 UI 元素或从视图中提取数据,那么您做错了。我会为它们创建 IBOutlet,或者如果有几个具有相同的标签,然后创建一个 IBOutletCollection,它本质上是一个包含元素的数组。 使用类公共和私有属性,@propert UIView *activityView; 我完全同意@Fogmeister 的观点,你为什么要遍历所有元素以获得视图。这很耗时,您不应该这样做。 这里是一个快速链接,其中包含使用标签的一些替代方法。 doing-it-wrong.mikeweller.com/2012/08/… 尽管我不同意在有多个子视图时使用标签,但我认为意见不是答案,所以答案是:使用其他 .h 文件来存储具有 #define 等名称的常量整数kButtonTag 5 这样你就知道什么是什么了。 【参考方案1】:

我会尽量避免使用view tags

通过使用propertiesdata models 代替标签,总是有其他(而且几乎总是更好)的方法来做完全相同的事情。

这是我发现的一篇文章,其中包含一些很好的示例,说明为什么使用它们不是一个好主意...http://doing-it-wrong.mikeweller.com/2012/08/youre-doing-it-wrong-4-uiview.html

如果您需要访问某个 UI 元素,请在需要它的类的接口中为其创建一个 IBOutlet

或者,如果有多个相同的元素,那么您可以创建 IBOutletCollection,它只是一个包含所有链接到它的元素的数组。

编辑

对于现在遇到此问题的任何人。这是一篇来自前 Apple 工程师的文章,解释了为什么使用标签不仅是一种代码异味和不良做法,而且还是一个性能问题。

https://www.fadel.io/blog/posts/ios-performance-tips-you-probably-didnt-know/

【讨论】:

以上是关于您如何管理 iOS 项目中的视图标签? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何访问标签栏控制器中的标签栏?

按下标签栏项目时如何关闭视图?

ios swift custom uitablecell如何放置几个项目(标签,图片)

如何在1项标签栏控制器中制作顶部标签栏以在swift中显示多个视图控制器?

如何在发布版本中使标签不可见[关闭]

ios如何获取视图中的子视图列表? [关闭]