gpt4 book ai didi

iphone - 滚动时 UITextField 的内容作为表格单元格的 subview 不稳定

转载 作者:行者123 更新时间:2023-11-29 04:08:25 26 4
gpt4 key购买 nike

我正在尝试将 UITextField 添加为我的表格单元格的 subview 。文本字段的内容很好,直到我开始滚动并且单元格开始被重用。图片说明了问题。

first screenshot second screenshot third screenshot

首先,UITextField 中右侧的蓝色值是正确的,即该值对应于行号。向下和向后滚动的第二个和第三个图像显示这些值正在以奇怪的方式重用。

如何避免这种情况?对 reuseIdentifier 使用唯一值可以解决这个问题,但显然效率不高。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

UITextField *numberTextField;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

numberTextField = [[UITextField alloc] initWithFrame:CGRectMake(200, 10, 95, 30)];
numberTextField.adjustsFontSizeToFitWidth = YES;
numberTextField.textColor = [UIColor blueColor];
numberTextField.placeholder = @"Enter value";
numberTextField.keyboardType = UIKeyboardTypeDecimalPad;
numberTextField.tag = ([indexPath row]+1);
numberTextField.backgroundColor = [cell backgroundColor];
numberTextField.textAlignment = NSTextAlignmentRight;
numberTextField.clearButtonMode = UITextFieldViewModeNever;
numberTextField.clearsOnBeginEditing = YES;
[numberTextField setEnabled:YES];

[cell addSubview:numberTextField];

} else {
numberTextField = (UITextField *)[cell.contentView viewWithTag:([indexPath row]+1)];
}

cell.textLabel.text = [NSString stringWithFormat:@"Row %i",[indexPath row]+1];
numberTextField.text = [NSString stringWithFormat:@"Value: %i",[indexPath row]+1];

return cell;
}

最佳答案

问题是您仅在创建 numberTextField 时将标签分配给它。如果它被重用,它的标签不会被重新分配。

您应该为 UITextField 使用常量标记号,而不是使用 row+1。

关于iphone - 滚动时 UITextField 的内容作为表格单元格的 subview 不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com