您如何管理 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
。
通过使用properties
和data 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如何放置几个项目(标签,图片)