滚动表格时刷新文本字段
Posted
技术标签:
【中文标题】滚动表格时刷新文本字段【英文标题】:TextFields are refreshed when table is scrolled 【发布时间】:2011-11-08 11:05:09 【问题描述】:请看代码
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
UILabel *playerHeading;
UITextField *txt;
if (cell == nil)
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:SimpleTableIdentifier] autorelease];
playerHeading=[[UILabel alloc ]initWithFrame:CGRectMake(5.0f, 10.0f, 70.0f, 30.0f)];
txt=[[UITextField alloc]initWithFrame:CGRectMake(80.0f, 13.0f, 170.0f, 30.0f)];
txt.tag=2;
[txt setBackgroundColor:[UIColor clearColor]];
//[txt setTextColor:[UIColor blackColor]];
//[txt setBackgroundColor:[UIColor whiteColor]];
[txt setTextColor:[UIColor grayColor]];
txt.delegate=self;
//[txt setBorderStyle:UIBorderStyle ]
[txt setText:@"Enter Player name"];
//txt.layer.cornerRadius=8.0f;
// txt.layer.masksToBounds=YES;
//txt.layer.borderColor=[[UIColor redColor]CGColor];
// txt.layer.borderWidth= 1.0f;
[playerHeading setBackgroundColor:[UIColor clearColor]];
[playerHeading setFont:[UIFont boldSystemFontOfSize:15]];
[playerHeading setTag:1];
[playerHeading setBackgroundColor:[UIColor clearColor]];
NSString *str=[NSString stringWithFormat:@"Player %i",indexPath.row];
[playerHeading setText:str];
[playerHeading setFont:[UIFont boldSystemFontOfSize:15]];
// NSLog(@"row %i ,section %i",indexPath.row,indexPath.section);
[cell.contentView addSubview:playerHeading];
else
playerHeading = [cell.contentView viewWithTag:1];
txt=[cell.contentView viewWithTag:2];
// NSLog(@"row %i ,section %i",indexPath.row,indexPath.section);
if(indexPath.section%2==0)
playerHeading.textColor=[UIColor blueColor];
else
playerHeading.textColor=[UIColor redColor];
playerHeading.text = [NSString stringWithFormat:@"Player %i",indexPath.row];
txt.tag=indexPath.section;
// NSString *nam=[NSString stringWithFormat:@"%i",indexPath.row];
// [txt setName:nam];
//txt.clearsOnBeginEditing=YES;
[cell.contentView addSubview:txt];
//cell.accessoryView=txt;
return cell;
我创建了一个包含 7 个部分的 UITable,每个部分包含 4 个玩家,用户需要填写到达行中的文本字段,但问题是当我滚动表格时,文本字段被设置为默认值,请帮助我如何设置文本字段为used插入的固定值
【问题讨论】:
【参考方案1】:为了解决您的问题,将用户插入的字符串存储到一个数据结构中,这样可以在 section 和 row 的帮助下轻松访问该字符串。
您可以使用 NSMutableDictionary,其键将是 section number,它将存储一个数组,并且数组的 'row' 索引将给出您在该特定文本字段中键入的字符串。
在 cellForRowAtIndexPath 中,您必须检查该单元格是否存在字符串,否则显示默认字符串或占位符。
【讨论】:
以上是关于滚动表格时刷新文本字段的主要内容,如果未能解决你的问题,请参考以下文章