我有一个tableView,它最初加载一个自定义单元格。该单元格有一个文本字段和一个用户可以修改的段控件。还有一个添加单元格按钮,如果按下该按钮,将在前一个自定义单元格的下面添加另一个自定义单元格。用户最多可以添加15个这样的自定义单元格。当最初的几个单元格最终从屏幕上消失并创建新的单元格时,它们只是创建了与index.row位置0、1、2等位置完全相同的单元格。
例如:用户在index.row位置0的自定义单元格的文本字段中输入"Test“。现在,当该单元格从屏幕上消失时,用户添加了一个新单元格,它只是添加了带有“textfield.text”值的原始单元格以及其他所有内容。如果我修改新单元格的DEMO值,假设是“textfield.text”,它会将index.row位置0处的文本字段更改为该值。
现在我知道这就是dequeueReusableCell的工作原理。它抓取屏幕外的单元格。但是我怎么才能绕过这个问题呢。并让它每次创建一个唯一的单元格。
*编辑这就是我插入新单元格的方式。
/* 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];发布于 2013-12-17 07:14:56
您不应该将单元格存储在数组中。您应该将单元的支持数据存储到数组中(或您认为合适的任何其他存储中),并使用数组中的数据更新已出列的单元。
例如,如果用户添加了"Test",您将把它添加到索引为0的数组中。现在用户添加了"Demo",您可以将其添加到数组中的索引1处。现在用户添加了越来越多的字符串,您可以将它们全部添加到数组中。一旦用户滚动到顶部,并要求您为第0节第1行提供一个单元格,您将出列一个单元格-任何单元格-并根据索引1处的数组的值设置它的标签。
发布于 2013-12-17 07:19:18
我不确定您是否正确地将数据与视图分开。每个单元格中都应该有一个文本条目数组,以便在[tableView:(TableView*)tableview cellForRowAtIndexPath:(NSIndexPath*)indexPath]中可以用数组中存储的文本填充单元格。当用户更新一些文本时,您就更新了数组。当您将一个单元格出队时,假设它是脏的并且其中已经有一些文本,因此应该在数组的末尾添加一个新的空字符串条目,并将新单元格的文本设置为一个空字符串。非那样做不行。
https://stackoverflow.com/questions/20622698
复制相似问题