我的自定义 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;
这似乎工作正常,但有一个异常(exception)。 TableView 绘制如下:
这显然不是我的自定义单元格。但奇怪的是,当我点击一个单元格时,我得到了这个:
这是我的自定义单元格,绘制在默认单元格后面。 什么?!我不确定这是怎么发生的,因为我从未在任何地方设置过 TextView 的标题,所以我不确定第一个约翰·史密斯来自哪里。
有人有什么想法吗?
最佳答案
在您的代码中,您分配一个普通的UITableViewCell
,而不是自定义单元格的实例。在 initWithStyle
中设置 reuseIdentifier
不足以加载自定义单元类的实例。
如果您针对 iOS 5 及更高版本进行开发,则可以使用 registerNib:forCellReuseIdentifier:
来注册包含自定义单元格的 NIB 文件。 dequeueReusableCellWithIdentifier:
将始终返回该 NIB 的实例。
关于objective-c - 自定义 UITableViewCell 无法正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022239/