UITableView不重用单元格?

时间:2009-09-24 15:06:52

标签: iphone uitableview iphone-sdk-3.0

早上好。

我在3.1应用程序中遇到了表格视图的小危机。我有一个表视图,其中一些复杂的tableViewCells是从一个nib加载的,并且它们没有被重用。感觉它可能与从笔尖加载它们有关,我决定尝试一个简单的测试项目,看看是否只使用基本的苹果模板代码重用单元格。我从基于导航的模板开始,这里是cellForRowAtIndexPath的代码:

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
    return cell;
}

我在下一行设置了断点,并且每次传递都会调用它。

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]

在构造函数中设置reuseIdentifier:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] autorelease];
    }

产生相同的结果,没有细胞重复使用。

提前感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:2)

该表通常会在需要开始重用之前创建并使用一些单元格(通常为5个左右)。这当然取决于它们的大小以及在任何给定时间在屏幕上显示的数量。没有什么可担心的。

答案 1 :(得分:2)

每次应用程序打开时,我都不确定您的意思是什么?

使用对象分配工具运行代码,并在滚动查看tableview时查看对象分配图。如果对象分配即使在几次滚动之后也会线性增加。那你就有问题了。

答案 2 :(得分:-1)

尝试使CellIdentifier静止,例如

static NSString *CellIdentifier = @"Cell";