自定义UITableViewCell Alloc问题

时间:2012-06-28 15:49:15

标签: uitableview

所以我有自定义UITableViewCells(用故事板制作),当我不按字面意思分配,初始化单元格时,应用程序崩溃了。但是,由于它们是自定义单元格,我不知道如何分配/初始化它们。

此代码崩溃:

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

    TableViewCells *cell = (TableViewCells *)[tableView dequeueReusableCellWithIdentifier:@"TableViewCellsID"];

return cell;
}

打印到控制台:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'

我理解这意味着它崩溃了,因为还没有分配单元格,但是当我尝试分配它时,我必须指定一个单元格样式。

因此,当我按如下方式构建单元格时,它不会崩溃:

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

     TableViewCells *cell = (TableViewCells *)[tableView  dequeueReusableCellWithIdentifier:@"TableViewCellsID"];
     if (cell == nil)
          cell = [[TableViewCells alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TableViewCellsID"];

     return cell;
}

问题是可行的代码(第二组),要求我设置UITableViewStyle。据我所知,没有UITableViewStyleCustom。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:-1)

在第一种情况下崩溃,因为没有要重复使用的单元格,而您正在调用dequeueReusableCellWithIdentifier

编辑 - 对于自定义单元初始化,您可以检查以下线程 -

How to make custom TableViewCell with initWithStyle after 3.0

initWithFrame vs initWithStyle