ios: Textfield 在 uitableview 中重复数据

ios: Textfield duplicates data in uitableview

每当我滚动表格视图时,来自文本字段的数据在我的表格视图单元格中重复。文本字段每 6 行重复一次又一次。

如何使用自定义单元格从文本字段中删除重复数据。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *Identifier= @"ProductCell";
    PlaceOrderTableViewCell * ProductCell = [ProductsTblView dequeueReusableCellWithIdentifier:Identifier];
    if (ProductCell==nil)
    {
        ProductCell = [[PlaceOrderTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Identifier];
    }
}

这不是重复数据,您使用的 UITableViewCell 不正确。出于性能原因,单元格在离开屏幕后会被重复使用,UITableViewCell 应该只用于显示模型中的数据,当它被重新使用时,以前的数据将被新数据模型实体中的数据替换

您应该为您的问题添加更多信息,您如何设置单元格的值?

编辑

如果您需要从 UITextField 中获取值,您应该具体实现 UITextFieldDelegate textFieldDidEndEditing: Also you should take a look at this answer,它解释了一个简单的 UITableViewUITextField 实现.

还有这个 answer 作为一些您可能想要查看的有趣教程

当您将相同的数据输入到您的文本字段时,这意味着您正在获取出列单元格,您需要更改您的模型 class 以根据单元格的索引路径提供文本字段数据,类似这样

textfiled.text = [数据objectAtIndex:indexPath.行];

注意:不要在创建单元格时分配 textfield.text 值,这可能是另一个原因,您将获得相同的数据。

之所以会发生这种情况,是因为 cells 得到重用,以提高 tableView 的速度。如果您想要超过 1000 个单元格,则必须加载所有单元格然后显示它们。当它被重复使用时,它只加载必须显示的内容。

解决此问题的方法是创建一个数组并执行以下操作:

[textField setText:[myArray objectAtIndex:indexPath.row]];

但为了获得更大的灵活性和耗时,将创建一个 NSDictionary,并为适当的 indexPath 存储适当的文本。像这样:

[textField setText:[my_dict objectForKey:indexPath.row];