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

Detail text label of UITableViewCell is invisible till user touches it

我在静态和分组的 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];

有人知道这是为什么吗?我该如何解决?

非常感谢!

更新:

正确显示的标签:

显示不正确的标签:

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

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

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

(Apple 引入了一个 "optimization" 错误,如果标签似乎没有被使用,它会被删除它的超级视图。因此,对于第一个布局通道,它被添加回来为时已晚,无法正确使用大小,一旦你给它分配了一个非零字符串。与单元格交互会导致它被突出显示,这就是标签在那个时候正确显示的原因。)