3

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

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

你能告诉我我应该如何处理这种行为吗?

4

2 回答 2

5

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

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

方法

于 2012-05-23T21:59:18.373 回答
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:单元格标记为适合在滚动出视图时重复使用的方法来创建单元格。这意味着您最多只能实例化一次可见的单元格总数,这使您的表的内存占用保持良好且低。

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

于 2012-05-23T23:50:36.747 回答