11

我最近开始在 Xcode 5 中构建一个非常基本的 To-Do List 作为我的第一个项目。几乎完成了 UI 设计和构建后,我现在被困在 TableView 中数据的实现上。我在列表中添加了 13 个项目的列表,并为列表中的第一个项目提供了“ListPrototypeCell”标识符,我的所有代码似乎都是正确的。我的项目有 3 个相同的问题:

Unsupported Configuration; Prototype cells must have reuse identifiers 

我在每个项目上都使用了标识符,尽管有人告诉我不需要在每个项目上都使用标识符,但我仍然会遇到这些错误。

我愿意将我的项目发送给任何认为他们可以帮助我解决问题的人,对于受过训练的人来说,这可能是我犯的一个非常基本的错误。

我很感激任何帮助!

4

5 回答 5

18

试试这个检查你的故事板并确认你的prototypeCell有一个重用标识符,

在此处输入图像描述

并在您的

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"sameReuseIdentifier"];
于 2014-07-04T08:32:56.680 回答
2

进入你的故事板,进入视图控制器,进入表格视图,进入表格视图单元,进入身份检查器,然后在“重用标识符”字段中输入一些内容

您可以使用重用标识符根据它们在表格视图中的样式来初始化单元格,如下所示:

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier"];
于 2014-07-04T08:29:36.723 回答
1

重用标识符是一个 id,您可以从中获取单元格。如果您设置重用 id "cell",您可以在 cellForRowAtIndexPath 方法中访问此单元格

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}

这意味着使用reuseid“cell”从stroyboard获取单元格。在您的情况下,您必须在两行以上编写如下

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
if (!cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
}

这一行表明每次新单元格都会被分配和初始化,并且它不使用原型单元格。

所以从不使用故事板中的原型单元。如果你愿意,我可以给你演示来说明它是如何工作的。

于 2014-07-04T12:43:24.117 回答
1

您收到该错误的原因是因为您的某些原型单元上没有重用标识符。

如果您不了解如何/何时使用原型和重用 ID。你应该阅读:iOS 表视图编程指南

于 2014-07-04T08:28:27.840 回答
0

我知道这很旧,但我看到了这个关于重用标识符的解释,它真的帮助我理解了为什么要使用重用标识符,所以我想分享一下,以防它帮助别人。

“reuseIdentifier 用于将 UITableView 中的相似行组合在一起;即,仅在内容上有所不同但在其他方面具有相似布局的行。

UITableView 通常会分配足够的 UITableViewCell 对象来显示表格中可见的内容。如果reuseIdentifier 设置为非nil 值,那么当table view 滚动时,UITableView 将首先尝试使用相同reuseIdentifier 重用已分配的UITableViewCell。如果没有设置reuseIdentifier,UITableView 将被迫为每个滚动到视图中的新项目分配新的UITableViewCell 对象,这可能会导致动画滞后。”

于 2016-04-07T06:49:48.130 回答