滚动时表格视图单元消失

wtf*_*wer 4 objective-c uitableview tablecellrenderer reuseidentifier ios

这个问题不一定会出现

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

更多信息请点击此处

点击显示 gif

点击显示故事板 png

代码

HSubjectCell *cell = [tableView dequeueReusableCellWithIdentifier:kSubjectCellIdentifier forIndexPath:indexPath];
_subjectView = cell;
cell.delegate = self;
cell.subject = self.subjectArr[indexPath.section - 3];
return cell;
Run Code Online (Sandbox Code Playgroud)

Edw*_*nch 5

当单元格的框架超出滚动视图的视野时,表视图会立即“隐藏”子视图。

关于表视图如何工作的简单示例

假设您将行的高度定义为100.0f。您向其添加一个 simple UIView(假设它具有橙色背景色),它将其边缘完美地固定到 的每个UITableViewCell边缘contentView

当您将该视图向上/向下滚动足够远以使100.0f高度位于滚动视图框架的上方/下方时,该行实际上是隐藏的。这是为了使表格视图变得活泼和高效。

你正在经历什么

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

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

但为什么会出现这种情况呢?

由于您添加的子视图不适合UITableViewCell,因此当该单元格滚动到视图之外(基于其框架)时,它会“消失”。随着它消失,您的子视图也会消失。

我该如何解决?

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

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