2012-02-08 65 views
1

这个问题让我发疯。UITableViewCell子视图不会显示,直到重绘

我有原型的UITableViewCell在我的故事板。它包含一堆子视图。其中一个子视图UILabel是行为不端的行为。

当tableview加载并首次显示时,所有单元格看起来都很好。但是,随着tableview向下滚动,最终其中一个单元显示没有UILabel子视图。它似乎总是第一个被回收的细胞。

但是,如果我继续向下滚动tableview,一旦行为不合格的单元格被tableview顶部剪切(当它开始从屏幕顶部滚动时),标签就会如其应该显示。

所以看起来标签在那里,它接收到我在我的cellForRowAtIndexPath方法中分配给它的字符串。这只是因为某种原因没有得到。我试过在各个地方插入setNeedsDisplay消息,但这并没有帮助。

什么也奇怪的是,我使用的是同样的子类的UITableViewCell用在不同的视图控制器故事板重复视图层次,在那里我没有任何麻烦。

有人对我如何开始解开这个谜题有一些想法吗?

谢谢!

+0

你修改表格单元格或子视图后,您初始化中的tableView:的cellForRowAtIndexPath? – 2012-02-08 16:23:23

+0

我是。我设置标签的文本,并与其他自定义UIView子类一起做其他事情。所有这一切都很好。这只是UILabel,没有得到绘制。 – CharlieMezak 2012-02-08 16:47:27

+0

我遇到了类似的事情。在一个特定的单元格上,一个标签不会被绘制。如果我在代码中断,单元格看起来非常好。如果我做了setNeedsDisplay,它就会显示出来。使我抓狂! – jasongregori 2012-02-11 04:10:40

回答

1

听起来这只是一个问题,当你使用可重复使用的单元格,这意味着可重复使用的单元格上的值可能没有被设置,直到你准备好滚动。

+0

我知道在单元格出现在屏幕上之前,值已被设置,因为所有其他子视图都已正确配置。只是没有绘制的标签。当标签显示出来时,它的文本值是正确的,因此在单元出现在屏幕上之前似乎已经与所有其他值一起设置了值。不知道你有什么建议的解决方案... – CharlieMezak 2012-02-08 18:45:28

+0

我能想到的唯一的另一件事是,在标签的观点是没有添加作为一个子视图,否则你可能想发布您的cellForRowAtIndexPath代码。 – 2012-02-08 22:17:29

相关问题