UITableViewCell文本字段在滚动tableview时消失数据

时间:2012-05-23 21:53:11

标签: objective-c ios cocoa-touch uitableview

我有UITableView个自定义单元格,这些单元格包含一些textFields。这里当我在textFields中输入一些数据并滚动表格视图数据时它会消失,我想是因为每次它都在创建新单元格。

我通过使用数组并在其中插入每个单元来解决此问题,但在这里我无法重复使用单元格,因此我们浪费了内存。

你能告诉我如何处理这种行为的完美方式吗?

2 个答案:

答案 0 :(得分:5)

使用数组存储每个文本字段的值,并在

中设置所需文本字段的值
- (UITableViewCell *)tableView:(UITableView *)tTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

方法

答案 1 :(得分:1)

听起来好像它与您在tableView:cellForRowAtIndexPath:方法中创建单元格的方式有关。但是,如果没有看到您的实施,我只能提出一般性建议(将您的实施添加到您的问题中,以便人们可以更加具体地了解他们的答案)。

如果您担心内存,请通过以下方式创建单元格来使用UITableView's内置单元格重用功能:

NSString *identifier = @"reuseIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
}
cell.textLabel.text = @"text relating to index path";

以上内容将检查tableView以查看是否有任何可用的单元格可供重复使用。如果没有,那么将返回nil。这是使用initWithStyle:reuseIdentifier:方法创建单元格的位置,该方法将单元格标记为在滚动视图外时适合重用。这意味着您最多只能实例化一次可见的单元格总数,这样可以保持表格的内存占用率很低而且很低。

请注意,我们在nil检查之外设置单元格的textField.text - 这是为了确保如果我们检索到可重复使用的单元格,我们将使用与{{1}相关的文本内容覆盖其旧文本内容传递给方法。