我有一堆视图,每个视图中都有 2 个完全相同的标签。标签在每个视图中都标记为 1 和 2。
现在我没有使用IBOutletCollection
before 并且引用了这些视图中的每一个(这是不必要的)并且正在获取对视图中标签的引用,如下所示:
l1 = (UILabel*)[_labels4 viewWithTag:1]; //_labels4 is a UIView with 2 labels in it
l2 = (UILabel*)[_labels4 viewWithTag:2];
效果很好,但是代码变得臃肿,所以我想开始使用一个,IBOutletCollection
这样我就可以使用 for 循环遍历所有视图
所以当我这样做时,它似乎工作正常,除了标签现在变成UIViews
而不是UILabels
for(UIView *view in self.labelViews){ //self.labelViews is the collection of UIViews aka _labels4 + others
UILabel *l1 = (UILabel*)[view viewWithTag:1];
UILabel *l2 = (UILabel*)[view viewWithTag:2];
l2.text = @"Reference"; //crash because unrecognised selector 'setText' sent to UIView
}
有人知道为什么吗?你可以在这里查看一些更详细的代码
帮助消除误解: