0

我有UITableView一堆UITableViewCells。这些UITableViewCells 里面有多个UITextFields。

现在,每次我上下滚动,UITableViewCells 离开视图,然后再回来,我在里面输入的任何文本都会UITextField消失。完成这项工作的最佳方法是什么?

static NSString *CellIdentifier = @"Cell";

ComplaintsCustomCell *cell=(ComplaintsCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell==nil){
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ComplaintsCustomCell" owner:self options:nil];

    for(id currentObject in topLevelObjects){

        if([currentObject isKindOfClass:[UITableViewCell class]]){
            cell = (ComplaintsCustomCell *) currentObject;
            break;
        }
    }
}

cell.durationFld.text=[dict valueForKey:@"Duration"];
[cell.durationFld setTag:indexPath.row + 5000];
4

3 回答 3

1

您的代码似乎有两个问题:

  1. 您将所有单元格的文本字段设置为完全相同的值[dict valueForKey:@"Duration"]
  2. 看起来[dict valueForKey:@"Duration"]实际上没有任何价值,这就解释了为什么再次调用您的代码时文本字段为空的原因。

我认为您应该创建一个简单的类,该类具有重新规划 NSArray 的属性并使用文本字段的初始值对其进行初始化。每当文本字段发生更改时,只需将 indexPath.row 相同索引处的数组对象替换为新文本即可。在您原来的 cellForRowAtIndexPath 方法中,您应该像这样分配文本字段的文本:

cell.durationFld.text = [valuesArray objectAtIndex:indexPath.row];

如果您处理大量文本字段,我还强烈建议您查看免费的 Sensible TableView 框架。祝你好运!

于 2013-04-01T16:11:45.340 回答
0

NSMutableArray在每个位置创建一个which ,保存一个NSString与每个单元格匹配的对象。

当您配置 + 显示中的每个单元格时- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath,将 UITextField 的文本设置为位置 indexPath.row 的数组中的字符串。

编辑 a 时,在数组的当前位置UITextField插入/更新对象NSStringindexPath.row

于 2013-04-01T10:59:30.803 回答
-1

一般建议:

UITextField 放入/创建cellForRowAtIndexPath方法并添加

    [cell.contentView addSubview:textFieldName]

这段代码写在

if(cell == nil)
 { 
     // put UITextField here
 }

cellForRowAtIndexPath方法。

于 2013-04-01T10:55:19.000 回答