UITableView不重用单元格,这样做很好的理由吗?

Nic*_*ard 6 iphone iso uitableview

我的UITableView中有5个单元格。每个都有一个UITextField作为子视图,用户将在其中输入数据。如果我确实使用单元格重用,则将单元格滚动到视图之外时,将清除文本字段。我不想处理这个。有没有一种方法可以不重用单元格,这样我就不会遇到这个问题,如果可以,怎么办?

这是一个坏主意吗?

Dee*_*eps 4

我的一个应用程序具有相同的功能,我使用下面的代码来实现这一目标,但我从未遇到过此类问题。

首先,您需要将所有文本字段值临时存储在数组中。像这样制作数组。

arrTemp=[[NSMutableArray alloc]initWithObjects:[NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],
         [NSString stringWithFormat:@""],nil];
Run Code Online (Sandbox Code Playgroud)

然后给所有textField tag = indexPath.row;

之后,您需要在以下两种方法中替换 textField 值。

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
   [arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}

-(void)textFieldDidEndEditing:(UITextField *)textField{
[arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}
Run Code Online (Sandbox Code Playgroud)

最后您需要在 cellForRowAtIndexPath 数据源方法中设置该值。这样,每当用户滚动表视图时,它就会设置临时数组中的先前值。像这样。

cell.txtEntry.text = [arrTemp objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

我可能忘记了一些要粘贴到此处的代码。因此,如果您有任何问题,请告诉我。