首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dequeueReusableCellWithIdentifier的解决方法

dequeueReusableCellWithIdentifier的解决方法
EN

Stack Overflow用户
提问于 2013-12-17 06:59:23
回答 2查看 130关注 0票数 0

我有一个tableView,它最初加载一个自定义单元格。该单元格有一个文本字段和一个用户可以修改的段控件。还有一个添加单元格按钮,如果按下该按钮,将在前一个自定义单元格的下面添加另一个自定义单元格。用户最多可以添加15个这样的自定义单元格。当最初的几个单元格最终从屏幕上消失并创建新的单元格时,它们只是创建了与index.row位置0、1、2等位置完全相同的单元格。

例如:用户在index.row位置0的自定义单元格的文本字段中输入"Test“。现在,当该单元格从屏幕上消失时,用户添加了一个新单元格,它只是添加了带有“textfield.text”值的原始单元格以及其他所有内容。如果我修改新单元格的DEMO值,假设是“textfield.text”,它会将index.row位置0处的文本字段更改为该值。

现在我知道这就是dequeueReusableCell的工作原理。它抓取屏幕外的单元格。但是我怎么才能绕过这个问题呢。并让它每次创建一个唯一的单元格。

*编辑这就是我插入新单元格的方式。

代码语言:javascript
复制
/* create cell and add to array */
NSString *CellIdentifier1 = @"cell";
CustomCell *customCell = (CustomCell*)[self.myTableView dequeueReusableCellWithIdentifier:CellIdentifier1];

/* save cell to array */
[self.fetchCellArray addObject:customCell];

/* Add cell in table */
NSIndexPath *indexPath2 = [NSIndexPath indexPathForRow:deleteInsertIndex inSection:0];
        [self.myTableView insertRowsAtIndexPaths:@[indexPath2] withRowAnimation:UITableViewRowAnimationAutomatic];
EN

回答 2

Stack Overflow用户

发布于 2013-12-17 07:14:56

您不应该将单元格存储在数组中。您应该将单元的支持数据存储到数组中(或您认为合适的任何其他存储中),并使用数组中的数据更新已出列的单元。

例如,如果用户添加了"Test",您将把它添加到索引为0的数组中。现在用户添加了"Demo",您可以将其添加到数组中的索引1处。现在用户添加了越来越多的字符串,您可以将它们全部添加到数组中。一旦用户滚动到顶部,并要求您为第0节第1行提供一个单元格,您将出列一个单元格-任何单元格-并根据索引1处的数组的值设置它的标签。

票数 2
EN

Stack Overflow用户

发布于 2013-12-17 07:19:18

我不确定您是否正确地将数据与视图分开。每个单元格中都应该有一个文本条目数组,以便在[tableView:(TableView*)tableview cellForRowAtIndexPath:(NSIndexPath*)indexPath]中可以用数组中存储的文本填充单元格。当用户更新一些文本时,您就更新了数组。当您将一个单元格出队时,假设它是脏的并且其中已经有一些文本,因此应该在数组的末尾添加一个新的空字符串条目,并将新单元格的文本设置为一个空字符串。非那样做不行。

  • 假设所有出列的单元格都被回收,因此需要将有关这些单元格的所有内容设置为默认值
  • 将单元格的数据保存在一个单独的对象(如数组)中,这样您就可以在任何索引路径上使用该索引路径的数据设置任何给定单元格。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20622698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档