dequeueReusableCellWithIdentifier永远不会返回我的可重用单元格

时间:2012-02-26 16:32:44

标签: objective-c cocoa-touch uitableview

我有一个带有大量单元格的 UITableViewController ,但它们都具有相同的配置 - 它只是不同的单元格内容。这是我的 UITableViewController 中的tableView:cellForRowAtIndexPath:方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"WSTableViewCell";

    WSTableViewCell *cell = (WSTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[WSTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    WSObject *item = [self.fetchedResultsController objectAtIndexPath:indexPath];
    [cell.textLabel setText:item.title];

    return cell;
}

以下是我的自定义 UITableViewCell 中的initWithStyle:reuseIdentifier:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
        [self.textLabel setFont:[UIFont boldSystemFontOfSize:12]];
        [self.textLabel setTextColor:[UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0]];
        [self.textLabel setHighlightedTextColor:[UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0]];
        [self.textLabel setNumberOfLines:2];
    }
    return self;
}

我刚刚注意到,为表格视图中的每个单元格调用此initWithStyle:reuseIdentifier:,并且 UITableViewController 中的dequeueReusableCellWithIdentifier:始终返回 nil 。据我了解这种具有可重用单元的机制,这种单元只应在使用相同的单元标识符时初始化一次。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

仅当单元格在屏幕外滚动时才会重复使用。假设一个屏幕显示11个单元格,您将分配11个单元格,在滚动时重复使用。