UITableViewCell 的详细文本标签在用户触摸之前是不可见的

Posted

技术标签:

【中文标题】UITableViewCell 的详细文本标签在用户触摸之前是不可见的【英文标题】:Detail text label of UITableViewCell is invisible till user touches it 【发布时间】:2015-05-21 18:10:30 【问题描述】:

我在静态和分组的 tableView 中设置了 UITableViewCell。单元格的样式是副标题,我正在设置它的初始值(无论我使用哪个,问题都保持不变):

self.myCell.detailTextLabel.text = [NSString stringWithFormat:@"%f test", testFloat]];

或者像这样:

self.myCell.detailTextLabel.text = @"not set";

单元格的detailTextLabel是不可见的,直到我将手指放在它上面,我什至不必松开它,只需将它放在单元格上,使其变成一点深灰色。

在设置初始单元格文本后,我在 viewWillAppear 中尝试了这两个,问题仍然存在:

[self.myCell setNeedsLayout];
[self.myCell setNeedsDisplay];

你们有谁知道这是为什么以及我该如何解决它?

非常感谢!

更新:

正确显示的标签:

标签显示不正确:

【问题讨论】:

使用完整的cellForRowAtIndexPath 方法更新您的问题。 @rmaddy 我没有 cellForRowAtIndexPath 方法,因为我的 tableView 是静态的 检查标签的颜色和单元格的背景颜色,可能textColor和文本和单元格的背景颜色相同。当你点击单元格时,它会变成不同的颜色。 @deoKaushal 我现在把颜色改成红色,还是同样的问题:/ 【参考方案1】:

这是一个已知的 ios 8 错误,如果以 nil 开头,则字幕最初不会出现。

如果您确保 detailTextLabel 永远不会为 nil(或为空),即使在 Storyboard 中,它也应该始终首先出现。

如果您有一些单元格没有字幕,则需要将其设置为空白,而不是 nil,否则将再次触发问题。

(Apple 引入了一个“优化”错误,如果标签似乎没有被使用,它的超级视图会被删除。所以,对于第一个布局通道,一旦你添加回来,它就太晚了,无法正确调整大小为其分配一个非零字符串。与单元格交互会使其突出显示,这就是标签在该点正确显示的原因。)

【讨论】:

以上是关于UITableViewCell 的详细文本标签在用户触摸之前是不可见的的主要内容,如果未能解决你的问题,请参考以下文章

详细文本标签未显示

如何排列不同的 UITableViewCell 图像和标签?

UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签

重用自定义UITableViewCell,如何获取每个单元格文本字段的文本进行保存?

如何动态调整 UITableViewCell 内的两个文本标签宽度?

UITableViewCell 子类不允许我设置标签文本