我有一个UITableView
自定义单元格,这些单元格包含一些文本字段。在这里,当我在 textFields 中输入一些数据并滚动表格视图数据时,它会消失,我认为是因为每次它都在创建新单元格。
我通过使用数组并在其中插入每个单元格来解决这个问题,但是在这里我无法重用单元格,所以我们在浪费内存。
你能告诉我我应该如何处理这种行为吗?
我有一个UITableView
自定义单元格,这些单元格包含一些文本字段。在这里,当我在 textFields 中输入一些数据并滚动表格视图数据时,它会消失,我认为是因为每次它都在创建新单元格。
我通过使用数组并在其中插入每个单元格来解决这个问题,但是在这里我无法重用单元格,所以我们在浪费内存。
你能告诉我我应该如何处理这种行为吗?
使用数组存储每个文本字段的值,并在
- (UITableViewCell *)tableView:(UITableView *)tTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法
听起来好像与您如何在该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
传递给方法相关的文本内容覆盖其旧文本内容。