43

我有一个相当大的项目(约 20 个场景)。其中之一是带有自定义 UITableViewController 类的 TableViewController。我给了单元格一个重用标识符,并为其添加了一个标签。当我尝试 Ctrl+拖动标签到 UITableViewController 头文件以创建插座时,我收到以下错误:

错误:非法配置:连接“tableInfoView”不能将原型对象作为其目标。

这是什么?我是否忽略了一些明显的东西?还是我需要创建一个自定义单元类并将出口拖到那里?如果是这样,我该如何指定 UITableViewController 中每个单元格唯一显示的数据?

4

7 回答 7

67

事实上,您不能只从UITableView委托视图控制器中的动态单元原型中创建一个出口。

您必须子类化UITableViewCell,然后将该类归因于您的原型。

然后你可以Ctrl-Drag从标签到UITableViewCell子类头文件。

UITableViewCell最后,在将头文件导入其中后,您可以在委托代码中访问此插座。

Apple“动态行内容的技术”部分对此进行了记录。

于 2012-10-25T09:32:28.520 回答
10

或者你可以给标签一个标签(例如100)并使用

myLabel = [myTableView viewForTag:100];

得到标签

于 2013-07-10T11:58:10.287 回答
2

我自己也有同样的错误。只是为未来的读者增加一个潜在的根本原因:

在我的例子中,我将一个控件(在这种情况下为按钮)从一个原型单元格复制到下一个原型单元格,并且该操作仍然引用了相邻单元格。我的桌子有几个不同的原型单元。

事实上,它实际上是正确连接到原型单元的 UITableViewCell 的正确子类,因此很难真正看到错误。

于 2013-03-03T12:24:20.487 回答
2

标记标签,您可以在视图控制器中的任何位置访问标签,就像从表视图中使用 viewWithTag 一样。

    UILabel *destinationLabel = (UILabel *)[self.tableView viewWithTag:1];


    destinationLabel.text = @"Label Destaination";
于 2014-06-02T08:20:04.260 回答
1

我遇到了同样的问题,但后来发现这只是一个愚蠢的错误。 我错误地将标签从 Cell 拖到了控制器的@interface

这也可能是你的问题。只需交叉检查一次。

于 2013-01-22T12:22:07.717 回答
-1

为原型单元设置故事板中.m文件中使用的正确重用标识符。我有同样的情况,这对我有帮助

于 2013-11-22T17:09:08.173 回答
-2

如果问题仍然存在,在做完所有事情之后,只需移除所有插座并小心地重新加入它们,这对我来说效果很好。

于 2014-03-27T09:47:15.817 回答