Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
出口无法连接到重复的内容iOS_Ios_Storyboard - Fatal编程技术网

出口无法连接到重复的内容iOS

出口无法连接到重复的内容iOS,ios,storyboard,Ios,Storyboard,我刚刚创建了一个应用程序,并开始将@IBOutlet连接到故事板。我正在用基本样式将其中一些连接到UITableViewCell原型单元中的标签。当我连接它时,尽管我在情节提要中遇到了以下错误: 从TableViewController到UILabel的detailText输出无效。无法将出口连接到重复内容 有人能帮我吗?我已经按照我一贯成功的方式设置了它,但这次它抛出了这个错误。创建一个表视图单元格子类,并将其设置为原型的类。将插座添加到该类并连接它们。现在,当您配置单元格时,您可以访问插座。

我刚刚创建了一个应用程序,并开始将@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接受的答案