自定义UITableViewCell无法正确绘制

时间:2012-08-18 21:04:03

标签: objective-c ios interface-builder

我的自定义UITableViewCell有一个非常奇怪的问题。我在Interface Builder中有一个标识符为“ThreadCell”的单元格,带有一些自定义标签。这些标签已被标记,因此我可以访问它们。

在我的代码中,我正在执行以下操作:

static NSString *CellIdentifier = @"ThreadCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: @"ThreadCell"];
}

Person *person = [self.people objectAtIndex: indexPath.row];
UILabel *nameLabel = (UILabel *)[cell viewWithTag: 0];
nameLabel.text = person.nickname;

return cell;

这似乎工作正常,但有一个例外。 TableView的绘制方式如下:

Cells

这显然不是我的自定义单元格。但奇怪的是,当我在一个单元格上点击时,我得到了这个:

Cells

我的自定义单元格,默认单元格后面。 什么?!我不确定这是怎么回事,因为我没有在任何地方设置textview的标题,所以我不确定John Smith的第一个来自哪里。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在您的代码中,您分配了一个普通的UITableViewCell,而不是您自定义单元格的实例。在reuseIdentifier中设置initWithStyle不足以加载自定义单元类的实例。

如果您针对iOS 5及更高版本开发,则可以使用registerNib:forCellReuseIdentifier:注册包含自定义单元格的NIB文件。然后,dequeueReusableCellWithIdentifier:将始终返回该NIB的实例。