ios - dequeueReusableCellWithIdentifier 的解决方法

标签 ios xcode uitableview

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

例如: 用户在 index.row 位置 0 的自定义单元格的文本字段中输入“Test”。现在,当该单元格离开屏幕并且用户添加一个新单元格时,它只是添加带有“Test”的 textfield.text 值的原始单元格“和所有。如果我将新单元格的 textfield.text 值修改为“Demo”,它会将 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];

最佳答案

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

例如,如果用户添加“Test”,您会将其添加到数组中索引 0 处。现在用户添加“Demo”,您将其添加到数组中索引 1 处。现在用户添加的字符串越来越多,你把它们全部添加到数组中。一旦用户滚动到顶部,并要求您为第 0 行第 1 行提供一个单元格,您将出列一个单元格 - 任何单元格 - 并根据索引 1 处数组的值设置它的标签。对于单元格来说也是明智的在第 0 节索引 0 - 数组将返回“测试”。

关于ios - dequeueReusableCellWithIdentifier 的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20622698/

相关文章:

ios - 如何修复这个变异错误?

ios - 如何从 iOS 应用程序中的音频文件访问声音样本?

xcode - Swift 正确的自动释放池

ios - 让tableView子View随着tableView滚动

ios - 尝试调整 subview 时 IBOutlet 不起作用

iphone - 在 iphone 应用程序中初始化模型时,如何最好地处理问题?

c++ - 链接到 Xcode 中的库 - 静态或动态

ios - 通过 NSDictionary 将 NSUserDefaults standardUserDefaults 放入 TableView

iOS:UITableView 单元中的 UIStepper

ios - 无限缩放 CATiledlayer iOS