滚动UITableView并保留单元格值

时间:2014-07-01 19:19:58

标签: ios objective-c uitableview uitextfield

我有这个代码为我的UITableView创建单元格并在每个单元格中放置一个textField。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [self.myTableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    UITextField *myTextField = [[UITextField alloc]
                          initWithFrame:CGRectMake(215, (cell.contentView.bounds.size.height-30)/2, 60, 30)];

    [myTextField setDelegate: self];
    myTextField.tag = indexPath.section;
    NSLog(@"%ld", (long)myTextField.tag);


    myTextField.placeholder = @"0%";
    myTextField.borderStyle = UITextBorderStyleRoundedRect;

    [cell addSubview:myTextField];

    cell.textLabel.text = self.cellLabels[indexPath.section];
    return cell;
}

从数组中检索单元格标签,因此即使用户滚动表格视图时单元格标签保持不变,但我发现当滚动表格视图并且单元格不在视图中时,它返回其文本时清除并替换为占位符文本。考虑到文本域文本基于用户输入这一事实,我该如何解决这个问题,以便在返回到屏幕时重新创建文本字段时保留输入。

更多详细信息:在应用程序中,在上一页中,用户选择他们想要显示的项目数和每个项目的名称(cellLabel)。例如2个苹果和2个橙子。每个项目都是tableView中的一个部分,因此当调用代码时,您会在前两个单元格中获得一个包含“apples”的列表,在接下来的两个单元格中将获得“oranges”。所有4个单元格旁边都有一个文本字段。

1 个答案:

答案 0 :(得分:0)

两种方式:

  1. 当用户在文本字段中键入内容时,您会记住他们键入的内容(可能是您将字符串放入数组或其他内容) - 研究如何单独更改文本。然后,在cellForRowAtIndexPath中,从数组中获取文本或其他内容,并将其放入文本字​​段中。

  2. 如果你只有一些单元格,那么你可以先创建它们,把它们放在某处(比如一个数组),然后在cellForRowAtIndexPath中找到正确的单元格。