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,它解释了一个简单的 UITableView
和 UITextField
实现.
还有这个 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];
每当我滚动表格视图时,来自文本字段的数据在我的表格视图单元格中重复。文本字段每 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,它解释了一个简单的 UITableView
和 UITextField
实现.
还有这个 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];