【问题标题】:Why is my custom UITableViewCell not showing?为什么我的自定义 UITableViewCell 没有显示?
【发布时间】:2012-03-29 13:46:42
【问题描述】:

我之前完成了自定义 UITableViewCells 没有问题。但我无法弄清楚我当前的项目发生了什么。

这就是我所做的……

  1. 创建 CustomCell.h(继承 UITableViewCell)
  2. 创建一个空的XIB并拖入UITableViewCell。将背景设置为黑色。
  3. 将 Interface Builder 中 UITableViewCell 的类更改为“CustomCell”
  4. 在我的 DetailViewController 中导入 CustomCell.h
  5. 修改tableView:cellForRowAtIndexPath:
static NSString *CellIdentifier = @"Cell";

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    NSLog(@"DO I GET HERE?");
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    cell = [topLevelObjects objectAtIndex:0];
}

我希望我的表格视图单元格显示为黑色?但他们仍然显示为白色......有什么想法吗?谢谢!

更新:好吧,原来,它正在加载自定义单元格...我添加了一个带有一些白色文本的 UILabel。我看不到它,但是当我突出显示单元格时,我可以看到文本在那里。那么现在问题来了,为什么单元格会忽略我为单元格设置的黑色背景?

【问题讨论】:

  • 你不是也要把 IB 中的所有者改成你的视图控制器吗?
  • 忽略我的回答,我的手机破坏了帖子。
  • 首先猜测是您正在从 xib 加载 UIView,您应该将其设置为 cell.contentView。尝试设置:cell.contentView = (UIView *)[topLevelObjects objectAtIndex:0]; 而不是 cell = [topLevelObjects objectAtIndex:0];
  • rokjarc: 我用那行赋值给只读属性错误
  • onnoweb:我不这么认为?我正在查看另一个与此工作相关的示例,但在 XIB 中没有看到任何对文件所有者或任何内容的引用

标签: ios uitableview


【解决方案1】:

编辑:至于为什么它不是黑色的 - 我希望有一些东西遮住了你的黑色 - 最有可能的候选者是标签背景是白色且不清晰。

以及第 3 点。

属性检查器(第 4 个选项卡)需要将重用标识符设置为您要重用的标识符(您在问题中使用 @"cell")。我会尝试使用一些更具体的东西——毕竟在某些应用程序中你可能有许多类型的自定义单元格。

我认为您还需要将 topLevelObjects 转换为 (CustomCell*)

if (cell == nil) {
    NSLog(@"DO I GET HERE?");
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    cell = (CustomCell*)[topLevelObjects objectAtIndex:0];
}

【讨论】:

  • 尝试按照您的建议设置重用标识符并进行转换..但仍然得到白色单元格:(
  • 在 xib 中 - 单元格是第一个/唯一的对象吗?我想不出任何其他可能有问题的地方——您拥有的代码与我一直在使用的代码形式相同。右键单击 xib 中的文件所有者并检查它的视图是否未设置为任何内容 - 它不应该是等。
  • 是的,单元格是第一个也是唯一的。我也完全糊涂了。文件的所有者未设置为任何内容。我使用 UIViewController 而不是 UITableViewController 有什么不同吗?另外,这是 splitviewcontroller 的 detailViewcontroller ......这和它有什么关系吗?我可能在这里抓住稻草
  • 嘿,检查我对问题的最新更新.. 单元格正在加载,它只是忽略了我设置的背景颜色?
【解决方案2】:

似乎忽略了我设置的背景颜色,所以我只是添加了一个带有背景颜色的 UIView,这似乎可以工作..

【讨论】:

  • 你可以在willDisplayCell...设置背景色,这是推荐的地方。
【解决方案3】:

您必须在表格视图中注册您的自定义单元格

这需要在调用该委托之前发生:

[self.tableView registerClass: [CustomCell class] forCellReuseIdentifier:@"CellIdentifier"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多