1

我在使用 UITableView 的新 registerClass 方法时遇到了问题。我很好地注册了我的单元格,然后当我想制作一个单元格时,我这样做:

static NSString *imageIdentifier = @"image";
CustomCell *cell = [self.tableView dequeueReusableCellWithIdentifier:imageIdentifier];

if (!cell) {
    cell = [[CustomCell alloc] initWithQuestion:self.question reuseIdentifier:imageIdentifier];
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}

这可能不是现代的方法,但我以前就是这样做的。问题在于,如果队列中没有新的单元格,则新的 registerClass 方法会您创建一个新单元格,因此 if (!aCell) 检查失败,并且单元格未正确构建。

我没有使用这种新方法正确出列吗?

4

2 回答 2

5

prepareForReuse1)在您的 UITableViewCell 子类的方法中设置单元格(在您的情况下为 selectionStyle) 。

2)在委托方法中dequeueReusableCellWithIdentifier:调用后设置单元格的内容。tableView:cellForRowAtIndexPath:

dequeueReusableCellWithIdentifier:如果您registerClass:使用相应的标识符调用,将始终返回一个单元格。

于 2012-12-13T07:32:45.840 回答
1

您使用新方法 ,dequeueReusableCellWithIdentifier:forIndexPath:并省略 if 子句。

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

    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
    // configure cell here
    return cell;
}

当您注册您的课程或 xib 时,您将使用相同的重用标识符。

于 2012-12-13T07:18:39.483 回答