为啥我的自定义 UITableViewCell 没有显示?
Posted
技术标签:
【中文标题】为啥我的自定义 UITableViewCell 没有显示?【英文标题】:Why is my custom UITableViewCell not showing?为什么我的自定义 UITableViewCell 没有显示? 【发布时间】:2012-03-29 13:46:42 【问题描述】:我之前完成了自定义 UITableViewCells 没有问题。但我无法弄清楚我当前的项目发生了什么。
这就是我所做的……
-
创建 CustomCell.h(继承 UITableViewCell)
创建一个空的XIB并拖入UITableViewCell。将背景设置为黑色。
将 Interface Builder 中 UITableViewCell 的类更改为“CustomCell”
在我的 DetailViewController 中导入 CustomCell.h
修改
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 中没有看到任何对文件所有者或任何内容的引用
【参考方案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似乎忽略了我设置的背景颜色,所以我只是添加了一个带有背景颜色的 UIView,这似乎可以工作..
【讨论】:
你可以在willDisplayCell...
设置背景色,这是推荐的地方。【参考方案3】:
您必须在表格视图中注册您的自定义单元格
这需要在调用该委托之前发生:
[self.tableView registerClass: [CustomCell class] forCellReuseIdentifier:@"CellIdentifier"];
【讨论】:
以上是关于为啥我的自定义 UITableViewCell 没有显示?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的自定义 UITableViewCell 宽度在初始加载时不正确?
为啥在我的自定义 UIView 类中没有调用 init(frame: CGRect)?