出口无法连接到重复的内容iOS
我刚刚创建了一个应用程序,并开始将@IBOutlet连接到故事板。我正在用基本样式将其中一些连接到UITableViewCell原型单元中的标签。当我连接它时,尽管我在情节提要中遇到了以下错误: 从TableViewController到UILabel的detailText输出无效。无法将出口连接到重复内容出口无法连接到重复的内容iOS,ios,storyboard,Ios,Storyboard,我刚刚创建了一个应用程序,并开始将@IBOutlet连接到故事板。我正在用基本样式将其中一些连接到UITableViewCell原型单元中的标签。当我连接它时,尽管我在情节提要中遇到了以下错误: 从TableViewController到UILabel的detailText输出无效。无法将出口连接到重复内容 有人能帮我吗?我已经按照我一贯成功的方式设置了它,但这次它抛出了这个错误。创建一个表视图单元格子类,并将其设置为原型的类。将插座添加到该类并连接它们。现在,当您配置单元格时,您可以访问插座。
有人能帮我吗?我已经按照我一贯成功的方式设置了它,但这次它抛出了这个错误。创建一个表视图单元格子类,并将其设置为原型的类。将插座添加到该类并连接它们。现在,当您配置单元格时,您可以访问插座。如果您使用表格视图显示设置和其他选项(如内置设置应用程序),则可以在属性检查器下将表格视图内容设置为静态单元格。此外,要执行此操作,必须将表视图嵌入UITableViewController实例。我有一个
UIViewcontroller
,其中有一个带有自定义单元格的表视图。我将UILabel的出口映射到UItableviewcell
到UIViewController
,然后得到错误。或者您不必使用IBOutlet来引用视图中的对象。您可以为tableViewCell中的标签指定标记值,例如,将标记设置为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
}
有两种类型的表格视图单元格通过故事板提供给您,它们是动态原型和静态单元格 1。动态原型 根据名称,动态生成此类型的单元格。它们是通过您的代码控制的,而不是通过故事板。借助于表视图的委托和数据源,您可以通过编程方式指定单元数量、单元高度和单元原型 将单元格拖动到表视图时,您正在声明单元格的原型。然后,您可以基于此原型创建任意数量的单元格,并通过
cellForRow
方法以编程方式将它们添加到表视图中。这样做的好处是,您只需要定义一个原型,而不需要创建每个单元,并将所有视图添加到其中(请参见静态单元)
所以在这种情况下,您无法将cell原型上的UI元素连接到视图控制器。您将只启动一个视图控制器对象,但可能会启动许多单元格对象并将其添加到表视图中。将单元原型连接到视图控制器是没有意义的,因为不能用一个视图控制器连接控制多个单元。如果这样做,您将得到一个错误
要解决此问题,需要将原型标签连接到UITableViewCell
对象。UITableViewCell
也是单元格的原型,您可以启动任意多个单元格对象,然后将每个单元格对象连接到从故事板表格单元格原型生成的视图
最后,在您的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元素,确实需要将它们直接连接到视图控制器,并进行设置
正如大多数人指出的那样,子类化
UITableViewCell
解决了这个问题。
但之所以不允许这样做,是因为原型单元(UITableViewCell)是由苹果定义的,您不能向其中添加任何自己的插座。单击模拟器,
导航到窗口并启用设备挡板有时Xcode无法正确控制单元出口连接 不知何故,我当前单元格的标签/按钮已连接到另一个单元格 我只需删除它们,错误就会消失。对于collectionView: 解决方案: 请从viewcontroller中卸下CollectionViewCell的IBoutlet 。该问题提到了您的IBOutlet的无效。因此,删除所有具有多个出口(invalids)的子类并重新连接它
不能将原型单元格中的标签连接到UIViewController子类中的IBOutlet-必须将其连接到UITableviewCell子类中的IBOutlet。好的,谢谢!:)所以,我明白了:你能解释一下为什么吗?因为你可以有任意数量的单元格,并且只有一个视图控制器-那么哪个单元格的标签应该连接到视图控制器IBOutlet?好的,那么为什么你不能在一个视图控制器中使用cellForRowAtIndexPath作为单元格文本?谢谢因为在加载视图控制器时,插座会绑定到对象(例如标签)——此时没有单元,因此没有要绑定的标签,如果有单元,你想要哪一个bind@Wain你能添加更多关于访问这些插座的信息吗?胡安·帕布罗-他说的是,使用自定义表视图单元格是正常的。您不能在使用单元格的视图内设置约束的出口,而是需要在cellForRowAtIndexPath中进行设置,例如-customCell.constraint\u row\u width.constant=25.0;这是一种更简单、更快的方法,应该是imhomake cu接受的答案