【发布时间】: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 这样你就知道什么是什么了。
标签: ios objective-c uistoryboard