滚动表格时刷新文本字段

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】:

为了解决您的问题,将用户插入的字符串存储到一个数据结构中,这样可以在 sectionrow 的帮助下轻松访问该字符串。

您可以使用 NSMutableDictionary,其键将是 section number,它将存储一个数组,并且数组的 'row' 索引将给出您在该特定文本字段中键入的字符串。

cellForRowAtIndexPath 中,您必须检查该单元格是否存在字符串,否则显示默认字符串或占位符。

【讨论】:

以上是关于滚动表格时刷新文本字段的主要内容,如果未能解决你的问题,请参考以下文章

滚动表格视图时,文本字段文本在其他文本字段上留下印象

滚动表格视图时文本字段为空

滚动表格视图时删除的文本字段值?

表格视图仅滚动到文本字段底部边缘

当我滚动表格视图时,文本字段中的数据设置为 null

当键盘中的“下一步”返回按钮时滚动带有文本字段的表格视图