当用户滚动 uitableview 时,UITableViewCell 中的文本会被删除

Posted

技术标签:

【中文标题】当用户滚动 uitableview 时,UITableViewCell 中的文本会被删除【英文标题】:text in UITableViewCell get remove when user scroll uitableview 【发布时间】:2017-05-19 06:14:52 【问题描述】:

我正在从事的项目有很多表格(如注册表单),大约有 20-25 个表格,每个表格有 8-9 个输入框,即文本字段。

1) 我创建了自定义 UITableViewCell 2)我在索引处为行单元格我写在下面的代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

        if(indexPath.row==0)
            NSString *simpleTableIdentifier = @"cell";
            customcell *cell = (DropdownCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
            if (cell == nil)
            
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:customcell owner:self options:nil];
                cell = [nib objectAtIndex:0];
            
            cell.Txtlist.placeholder = @"Select type of meeting";
            self.txtType1 = cell.Txtlist;  // i had created the local variable uitextfield.So that i can access that locally in my application.
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            return cell;
        
        else if(indexPath.row == 1)
            NSString *simpleTableIdentifier = cell;
            customcell *cell = (customcell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
            if (cell == nil)
            
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:customcell owner:self options:nil];
                cell = [nib objectAtIndex:0];
            
            cell.Txtlist.placeholder = @"Select Client Name";
            self.txtType2 = cell.Txtlist;  // i had created the local variable uitextfield.So that i can access that locally in my application.
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            return cell;
        

3)UI 是正确的。 但问题是当我在行 = 0 的文本字段中写一些文本并滚动 uitableview 时。文本字段的值被删除。

我该如何解决这个问题。 请帮忙。 如果有更好的方法来实现表单,也请帮助我。

谢谢

【问题讨论】:

【参考方案1】:

根据我的理解,您在单页上使用 4-5 个文本字段,那么您必须将这些值存储在数组或字典中的某个位置,以便每当为该特定填充数据单元格调用 cellForRowAtIndex 时,该单元格将使用该值数组或字典以显示以前填充的数据。 或“只需存储值”。

【讨论】:

【参考方案2】:

您没有正确地重用表格视图单元格。 阅读documentation 一次。

【讨论】:

感谢您的快速回复。你能帮我指出确切的错误吗?【参考方案3】:

    初始化一个全局 NSMutableDictionary 对象。

    // 在标题中 NSMutableDictionary *values;

    用户字典的值特征。

    // 在 vi​​ew-did-load 方法中 values = [NSMutableDictionary 字典];

    // 为给定设置文本值 [值 setValue:@"" forKey:@(0)]; // 你的行索引 0 [值 setValue:@"" forKey:@(1)]; // 索引 1

    设置TextField Delegate & tag,同时设置存储文本。

    cell.Txtlist.delegate = self; cell.Txtlist.tag = indexPath.row; NSString *value = values[@(indexPath.row)]; cell.Txtlist.text = value;

    实现 TextField 方法,

    (void)textFieldDidEndEditing:(UITextField *)textField [values setValue:textField.text forKey:@(textField.tag)];

享受...继续努力。

【讨论】:

以上是关于当用户滚动 uitableview 时,UITableViewCell 中的文本会被删除的主要内容,如果未能解决你的问题,请参考以下文章

编辑第一个 UITextField 时,如何将 UITableView 滚动到第二个 UITextField?

UITableView 在旋转时使用自动布局调整大小

当用户滚动 uitableview 时,UITableViewCell 中的文本会被删除

UITableView 滚动 UINavigationBar

当 scrollViewDidEndDragging 时 UITableView 滚动到特定点

在 UITableView 中滚动时缩放图像