我有一个UITableView,我将数据加载到3个块中。我加载了最新的10条记录,当用户使用UIRefreshControl
上拉时,我加载前面的10条并显示上一条块的最后一行。我在从数据库
previousContentSizeHeight = tableView.contentSize.height
然后当数据到来并更新我的数组时,我使用previous来计算表的新内容大小
let difference = tableView.contentSize.height -
previousContentSizeHeight - MinimumCellHeight
self.messageTableView.setContentOffset(CGPoint(x: 0, y: difference), animated: false)
这在很大程度上起作用。在加载第一个集合和加载第二个集合时,它在viewDidAppear之后正常运行,但在第三个集合中,它开始改变内容大小。它减少了!我的理解是,如果我向其添加数据(不删除任何内容),内容大小应该只会增长。 我在表格内容大小的代码读数中有多个地方,如此事件:
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print("tableView.contentSize.height is: \(tableView.contentSize.height)")
}
当我上下滚动时,我看到数量减少,有时会增加和减少 为什么内容大小会发生变化!?
注意:我想坚持使用内容偏移量。我比IndexPath更幸运。
更新#1 @Sohil R. Memon:我试过你的建议。每个截图,我添加了一个print语句,你可以看到viewDidLayoutSubviews仍未执行。我尝试使用self.messageTableView和tableView进行endDisplaying
答案 0 :(得分:0)
显示单元格并调用didEndDisplaying
后,还有更多内容需要处理,当您再次滚动cellForItem
次调用时,这会给您不同的尺寸。
为了在显示所有单元格后获得contentSize
的{{1}},您可以从下面的方法获取它。只需在UITableView
课程中编写以下方法。
UIViewController
希望这有帮助!