更改自定义UITableViewCell

时间:2015-06-18 16:22:17

标签: ios objective-c uitableview

我在我的应用中使用了两种不同的UITableViewCell s。理想情况下,我想像这样使用它们:

if (self.data.count > 0) {
    static NSString * reuseIdentifier = @"programmaticCell";
    articleCell * cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (!cell) {
        cell = [[articleCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
    }

    return cell;
} else {
    static NSString * reuseIdentifier = @"programmaticCell";
    emptyCell * cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (!cell) {
        cell = [[emptyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
    }

    cell.header.text = @"No data";
    [cell.button setTitle:@"Button" forState:UIControlStateNormal];

    return cell;
}

但是,当我使用上面的代码时,它会崩溃。在从服务器下载数据时,将显示前1 emptyCell。加载后,UITableView会刷新并且应用程序崩溃,因为它尝试再次使用emptyCell。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在使用相同的reuseIdentifier,使用不同的。要检查的另一件事是您已使用表格视图注册了自定义单元格及其各自的标识符。

此外,如果您注册了单元格子类,则不必检查它们是否为nil,您可以保证获得实例。