具有文本字段的 uitableview 中的滚动问题
Posted
技术标签:
【中文标题】具有文本字段的 uitableview 中的滚动问题【英文标题】:Scrolling issue in uitableview having textfields 【发布时间】:2012-07-30 10:27:09 【问题描述】:我有一个包含多个部分的UItableview
,每个部分有两行包含标签和文本字段。滚动数据时,文本字段会改变其位置。
[1]:UITableView scrolling issue这个问题和我的问题类似,但我无法得到确切的解决方案。
这是我的数据源,即 cellForAtIndexPath 方法。
static NSString *CellIdentifier = @"Cell";
UILabel * mainLabel;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
mainLabel = [[[UILabel alloc] initWithFrame:CGRectMake(20.0, 8.0, 100.0, 30.0)] autorelease];
mainLabel.tag = MAINLABEL_TAG;
mainLabel.font = [UIFont systemFontOfSize:17.0];
mainLabel.textColor = [UIColor blackColor];
mainLabel.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:mainLabel];
mainTF = [[[UITextField alloc]initWithFrame:CGRectMake(150, 8.0, 140.0, 30)] autorelease];
mainTF.tag = MAINTEXTFIELD_TAG;
mainTF.font = [UIFont systemFontOfSize:17.0];
mainTF.textColor = [UIColor blackColor];
mainTF.backgroundColor = [UIColor clearColor];
mainTF.borderStyle = UITextBorderStyleRoundedRect;
mainTF.delegate = self;
mainTF.autocorrectionType = UITextAutocorrectionTypeNo;
mainTF.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
mainTF.returnKeyType = UIReturnKeyDone;
mainTF.clearButtonMode = UITextFieldViewModeWhileEditing;
mainTF.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[cell.contentView addSubview:mainTF];
else
mainLabel = (UILabel *)[cell.contentView viewWithTag:MAINLABEL_TAG];
mainTF = (UITextField *)[cell.contentView viewWithTag:MAINTEXTFIELD_TAG];
if (indexPath.row == 0)
mainLabel.text = @"Quantity";
//mainTF.text =@"1";
else
mainLabel.text = @"Unit";
//mainTF.text = @"100 grams";
// Configure the cell...
return cell;
【问题讨论】:
【参考方案1】:如果您将单元格出列,它们将包含之前放入其中的数据。您应该在每次加载单元格时将 textfield.text 初始化为 @""。
【讨论】:
你能详细说明一下吗?我找不到你? 如果你: UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];如果它返回一个单元格,则该单元格将包含第一次使用时放入的所有数据 我对编程很陌生。所以请告诉那行代码有什么问题。以及我应该在这段代码中做什么。 您应该简单地取消注释 mainTF.text 并将其设置为 mainTF.text = @"" 是的,我明白,如果您想保留数据,您需要创建 5x2 = 10 个不同的文本字段。您可以在循环中执行此操作并将文本字段添加到数组中,并使用它们在数组中的索引引用您的文本字段,然后将它们添加为单元格的子视图。因此 [cell.contentView addsubView:[arrayOfTextFields objectAtIndex:index]];或者您继续执行您所做的操作,并在文本字段委托中将字符串存储在一个数组中,然后将相应的字符串重新分配给单元格文本字段。无论如何,我不确定您是否有一个好的实现,也许您应该重新考虑您的单元格。以上是关于具有文本字段的 uitableview 中的滚动问题的主要内容,如果未能解决你的问题,请参考以下文章
使 UIViewController 中的 UITableView 滚动到文本字段