Iphone detailTextLabel最初不显示

Iphone detailTextLabel最初不显示,iphone,uitableview,Iphone,Uitableview,我使用的是在故事板中设置的静态UITableview。对于某些单元格(Style=Right detail),我设置了detailTextlabel。视图中的文本将如下所示: self.recentProductsCell.detailTextLabel.text = description; 对于此单元格,不显示标签。如果我记录文本,它显示为OK。 我检查了detailTextLabel是否未隐藏。 我没有改变故事板中的任何其他属性。 该单元格有一个附件,但将其设置为其他选项没有帮助

我使用的是在故事板中设置的静态UITableview。对于某些单元格(Style=Right detail),我设置了detailTextlabel。视图中的文本将如下所示:

   self.recentProductsCell.detailTextLabel.text = description;
对于此单元格,不显示标签。如果我记录文本,它显示为OK。 我检查了detailTextLabel是否未隐藏。 我没有改变故事板中的任何其他属性。 该单元格有一个附件,但将其设置为其他选项没有帮助

奇怪的是: 如果我运行而detailTextlabel未显示,我将通过点击并移动手指来选择该行。从那时起,detailTextLabel将显示!即使在隐藏和重新显示视图时,标签仍保持可见。但是,在代码中重置并设置它会使标签再次消失

我可能做错了什么,还是这是一个错误

编辑:在5.0和5.1中都选中,行为相同。 我在ViewWillDisplay的代码中选择并取消选择这一行,发现了一个难看的解决方法。所以我补充说:

[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:3 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];
[self.tableView deselectRowAtIndexPath: [NSIndexPath indexPathForRow:3 inSection:0] animated:NO];
它可以工作,但我可以看到行被选中和取消选中。因此,我还更改了selectionStyle,但现在当显示视图时,此行会闪烁


额外注释:在同一个视图中,我设置了其他静态单元格的detailLabel,它们显示得很好。

尝试设置单元格样式=subtitle

您在错误的位置设置了标签


发布UITableViewDelegate/DataSource代码。您需要在
单元格中设置此值,或
将显示单元格索引路径:

是否将所有控件添加到UITableViewCell的
contentView
中?如果你只是简单地将其添加到单元格中,这有时会导致不稳定的行为。

我确实发现detailLabel没有出现,不是为什么,我知道这是一个bug

如果detailLabel.Text的上一个值为nil或空字符串,则将detailLabel设置为新值后不会显示。 如果我将detailLabel设置为nil/empty以外的任何值(最初),然后将其设置为其他值,则新值将正确显示


不显示的原因可能比之前的空白更复杂,但在我的情况下,这解决了我的问题。如果我希望detailLabel为“空”,我可能会以背景色显示它

我有这个问题的副本。相同的配置-故事板中的静态单元,但具有左侧细节单元。我也看到了触摸电池使其可见的问题


我通过将故事板中的初始细节标签内容设置为单个空间来解决这个问题。在代码中设置了实际的细节标签内容后,我向细节标签发送了一条sizeToFit消息。

我也遇到了同样的问题,我认为这是一个bug。 如果我在线路上按住水龙头,我会看到detailTextLabel

正如Bjinse所说,如果之前将detailTextLabel设置为nil或“”(不带空格=空字符串),则通常会出现这种情况


因此,我结束了将我希望为空的detailTextLabel设置为“”(带空格)。这对我很有效。

我发现这只发生在我的iPhone 6plus(8.4)上

解决方案1(建议):

在不重复使用电池后,问题解决了

//var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)
//if cell == nil {
//    cell = UITableViewCell(style: .Value1, reuseIdentifier: cellIdentifier)
//}

var cell = UITableViewCell(style: .Value1, reuseIdentifier: cellIdentifier)
解决方案2:

因为文本在我们滚动或触摸后显示,所以我决定重新加载数据。这也可以,但是在视图显示和detailText显示之间有一个延迟

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    tableView.reloadData()
}

同样的问题依然存在。最初不显示字幕,但在选择行后显示。主标题最初显示在中间,并弹出到顶部为detailLabel腾出空间。否,因为我使用的是静态单元格,通过将UITableView的属性检查器中的内容设置为:静态单元格,在情节提要中创建。另请参见中问题的答案:您仍然可以使用
willDisplayCellAtIndexPath
。这将允许您在屏幕上绘制单元格之前立即进行最终更改。唉,只有在首次为静态单元格构造tableview时,才会激发willDisplayCellAtIndexPath,从:-[UITableView(UITableViewInternal)\u createPreparedCellForGlobalRow:withIndexPath:]。之后,在显示单元格时不会激发此方法。(是的,委托被设置为控制器.)。我还尝试将代码移动到tableView:cellForRowAtIndexPath:但结果是一样的。对该方法的调用不是针对表的每个外观,而是仅针对初始创建。我的tableView从未发布,因为它是splitViewController中的主视图。也许我应该强制发布hide?顺便说一句:我尝试了CellForRowatinexPath,因为文档说这是正确的方法:我使用预定义的类型UITableViewCellStyleValue2(通过在IB中选择Style=Right Detail)。所以我不做自定义控件。你能发布相关的代码(如果有的话)来创建和重用单元格吗?我仍然有一些关于为什么会发生这种行为的理论,但我需要看更多的代码来确定它。现在很抱歉。也许复活节过后,小节日就要到了。我觉得这太奇怪了,我想尝试从头开始在项目构建中复制,然后向苹果提交一份bug报告。只是为了体验一下。但这需要一些时间。也许星期二吧。谢谢你现在的兴趣。我又遇到了这个错误,现在我更有经验了。您的答案是正确的,在故事板中设置初始值会有所帮助。我不需要将sizeToFit发送到详细信息标签。在调试器中检查时,我发现如果序列图像板中未指定默认值,则detaillabel的大小和原点都不正确。仅发送sizeToFit会更改帧的大小,但不会更改原点。我的问题解决了。大小合适对我来说是一个很好的解决办法。有人向苹果公司报告过吗?谢谢,苹果公司的另一个奇怪的错误。2019年-仍然是错误:-)。选择行时,将显示详细信息标签