插座不能连接到重复的内容 iOS

我刚刚创建了一个应用程序,并已开始连接@IBOutlet 的故事板。我将其中的一些标签连接到 UITableViewCell 原型单元中的基本样式的标签。当我连接它的时候,我在故事板中得到了这个错误:

从 TableViewController 到 UILabel 的 detailTextOutlet 无效。 Outlet 无法连接到重复内容。

有人能帮帮我吗?我已经按照我一贯成功的方式设置了它,但这一次它抛弃了我这个错误。

130068 次浏览

创建一个表视图单元格子类,并将其设置为原型的类。将插座添加到该类并连接它们。现在,当您配置单元格时,您可以访问插座。

如果您使用表视图来显示设置和其他选项(就像内置的设置应用程序那样) ,那么您可以在 属性督察下将 查看表格内容设置为 静电细胞。此外,要做到这一点,您必须将表视图嵌入到 UITableViewController 实例中。

我有一个 UIViewcontroller,里面有一个带有自定义单元格的桌面视图。我将 UILabel 的出口映射到 UItableviewcellUIViewController,然后得到错误。

或者不必使用 IBOutlet来引用视图中的对象。您可以给 TableViewCell中的 Label 赋予一个 Tag 值,例如将 Tag 设置为 < em > 123 (这可以由属性检查器完成)。然后您可以通过以下方式访问标签

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


let cell = tableView.dequeueReusableCell(withIdentifier: "someID", for: indexPath)


let label = cell.viewWithTag(123) as! UILabel //refer the label by Tag


switch indexPath.row {
case 0:
label.text = "Hello World!"
default:
label.text = "Default"
}
return cell
}

通过情节串连板,有两种类型的表格视图单元提供给您,它们是 动态原型静电细胞

enter image description here

1. 动态原型

根据名称,动态生成这种类型的单元格。它们是通过你的代码控制的,而不是故事板。借助表视图的委托和数据源,您可以以编程方式指定单元格的数量、单元格的高度和单元格的原型。

将单元格拖动到表视图中时,就是在声明单元格的原型。然后,您可以基于此原型创建任意数量的单元格,并通过 cellForRow方法以编程方式将它们添加到表视图中。这样做的好处是,您只需定义1个原型,而不需要自己创建每个单元格,并将所有视图添加到这些单元格中(参见静态单元格)。

因此,在这种情况下,无法将单元格原型上的 UI 元素连接到视图控制器。您将只启动一个视图控制器对象,但是您可能启动了许多单元格对象并将其添加到表视图中。将单元格原型连接到视图控制器是没有意义的,因为您不能用一个视图控制器连接来控制多个单元格。如果你这样做,你会得到一个错误。

enter image description here

要解决这个问题,需要将原型标签连接到 UITableViewCell对象。UITableViewCell也是单元格的原型,您可以启动任意数量的单元格对象,然后将每个对象连接到从故事板表单元格原型生成的视图。

enter image description here

最后,在 cellForRow方法中,从 UITableViewCell类创建自定义单元格,并使用标签做一些有趣的事情

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellIdentifier") as! YourCell


cell.label.text = "it works!"


return cell
}

2. 静电细胞

另一方面,静态单元确实是通过故事板配置的。您必须将 UI 元素拖动到每个单元格以创建它们。你将从故事板控制细胞数量、高度等。在这种情况下,您将从手机中看到一个表视图,与从故事板中创建的视图完全相同。静态单元格更常用于设置页面,这些单元格不会发生很大变化。

要控制静态单元格的 UI 元素,确实需要将它们直接连接到视图控制器,并设置它们。

enter image description here

正如大多数人指出的那样,子类化 UITableViewCell解决了这个问题。 但这不允许的原因,因为原型单元(UITableViewCell)是由苹果公司定义,你不能添加任何自己的插座到它。

点击模拟器, 导航到“窗口”并启用设备边框

有时,Xcode 无法控制正确的单元格出口连接。

我当前手机的标签/按钮以某种方式连接了另一个手机 我只要删除这些,错误就会消失。

对于 CollectionView:

解决方案:

从视图控制器中,请移除 Colllectionviewcell 的 IBout

问题提到您的 IBOutlet 无效。所以删除所有子类有多出口(无效) ,并重新连接它。

在另一个 Collectionviewcell 问题中已经提到了答案