'奥特莱斯无法连接到重复内容'在UICollectionViewCell的子类中

时间:2018-03-04 20:15:16

标签: ios swift uicollectionview

Xcode 9.2,Swift 4.对于Collection View Controller中的单元格,我创建了一个名为CollectionViewController的子类。我将单元格链接到这个子类。我在Main.storyboard的单元格中创建了一个Label,并将其链接到子类,如下所示:

class CollectionViewCell: UICollectionViewCell {
   @IBOutlet weak var personName: UILabel!
}

然后我尝试在我的CollectionViewController类(UICollectionViewController的子类)中的collectionView函数中访问此标签,该类链接到我的单元格所在的Collection View Controller:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CollectionViewCell
    cell.personName.text = "text"
    return cell
}

我是如何得到这个错误的:"从UICollectionView到UILabel的personName出口无效。插座无法连接到重复内容。"

3 个答案:

答案 0 :(得分:1)

我建议您仔细检查"连接检查员" (该右侧面板上的最后一个选项卡)用于该控件(以及该单元格内的任何其他控件)。听起来像单元格中的东西有一个连接到视图控制器的挥之不去的插座。连接检查员将帮助您确定:

enter image description here

确保视图控制器不显示为其中一个插座。在上面的例子中,我意外地""为这个标签创建了两个出口,一个出现在单元子类中(这是正确的),另一个出现在视图控制器上(这是不正确的)。

这将导致编译时错误:

  

错误:从ViewController到UILabel的customLabel出口无效。奥特莱斯无法连接到重复内容。

如果删除单元格和视图控制器之间的出口连接(或者它连接的任何非单元类),则此编译时错误将消失。

注意,"奥特莱斯之前的句子不能连接到重复内容"消息将准确地告诉您哪个插座导致问题。您甚至可以在"问题导航器"中单击此错误。在左侧面板中,Xcode将跳转到故事板并选择有问题的控件(此时您可以直接打开连接检查器)并找到有问题的插座。

答案 1 :(得分:0)

有关类似错误情况的补充说明:

在我得到的错误消息以及与上面类似的消息中,Xcode(ver 12.0)还提供了Object ID,我在Identity Inspector tab中提到了该错误以消除错误原因

答案 2 :(得分:0)

解决方案:从视图控制器

<块引用>

请删除colllectionviewcell的IBoutlet

。该问题提到了您的 IBOutlet 无效。所以删除所有具有多插座(无效)的子类并重新连接它。

The answer is already mentioned in another question