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,如何获取每个单元格文本字段的文本进行保存?