滚动时表格视图单元格消失

tableview cell disappears when scrolling

这个问题不一定会出现

滑动时有时消失有时不消失

这里有更多信息

click to show gif

click to show storyboard png

代码

HSubjectCell *cell = [tableView dequeueReusableCellWithIdentifier:kSubjectCellIdentifier forIndexPath:indexPath];
_subjectView = cell;
cell.delegate = self;
cell.subject = self.subjectArr[indexPath.section - 3];
return cell;

Table 视图 "hide" 在单元格的框架离开滚动视图的视图时立即子视图。

有关 table 视图如何工作的简单示例

假设您将行定义为具有 100.0f 的高度。您向其添加一个简单的 UIView(假设它具有橙色背景色),它可以将其边缘完美地固定到 UITableViewCellcontentView.

的每个边缘

当您将该视图 up/down 滚动得足够远,以至于 100.0f 高度是 above/below 滚动视图的框架时,该行实际上是隐藏的。这是为了使 table 视图快速高效。

你正在经历什么

让我们使用前面的示例,但不是将子视图的底部固定到 UITableViewCellcontentView 的底部,而是让它 50.0f 越过底部contentView,因此在 UITableViewCell.

之外

您会注意到,如果您滚动橙色 UIView 使其向顶部移动,即使屏幕上仍然显示一些橙色,它也会消失。

但是为什么会这样呢?

因为您添加的子视图不适合 UITableViewCell,当该单元格滚出视图(基于其框架)时,它 "disappears"。随着它消失,你的子视图也会消失。

我该如何解决这个问题?

确保所有子视图都在添加它的 UITableViewCell 的框架内。

一种查看这些边界的简单方法,使 UITableViewCellcontentView 的背景色成为突出的颜色,例如 [UIColor orangeColor];。然后你会更好地理解框架是如何相互关联的。