objective-c - 自定义 UITableViewCell 无法正确绘制

标签 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;

这似乎工作正常,但有一个异常(exception)。 TableView 绘制如下:

Cells

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

Cells

这是我的自定义单元格,绘制在默认单元格后面。 什么?!我不确定这是怎么发生的,因为我从未在任何地方设置过 TextView 的标题,所以我不确定第一个约翰·史密斯来自哪里。

有人有什么想法吗?

最佳答案

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

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

关于objective-c - 自定义 UITableViewCell 无法正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022239/

相关文章:

objective-c - Cocoa HTTP post方法认证

ios - 不允许我发布到此 API 的 NSURLSession 我做错了什么?

ios - SecItemCopyMatching 返回 nil 值没有任何错误

ios - 在 Interface Builder 中的 Assets 目录上使用图像

objective-c - NSWindowController执行关闭: method not work

ios - iOS 中的深层链接 - 如果未安装应用程序,请导航至 Apple Store

ios - 从 Kotlin Native 继承 UIView

ios - 目前无法在 Xcode 模拟器中安装此应用

iphone - 基于 View 的 iOS 应用程序模板

iphone - 如何在 xcode 中使用相同的 nib 文件创建多个窗口