2015-06-18 80 views
0

我在我的应用程序中使用了两种不同的UITableViewCell。理想情况下,我想使用它们像这样:更改自定义UITableViewCell

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。我该如何解决这个问题?

+0

提供有关崩溃的详细信息。 – rmaddy

+1

我高度怀疑你可以对两种不同的UITableViewCell使用相同的可重复使用的标识符......你在两种情况下使用了不同的标识符。 – luk2302

回答

0

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

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

相关问题