我有一个自定义单元格UITableViewCell,有时在加载tableview时,我会丢失单元格(根本没有呈现内容视图的单元格。当我使用reloadRowsAtIndexPath时,我得到的行为相当一致(当自定义对象是单元格时)例如,正在使用正在更新)。如果我在tableview上调用reloadData,通常不会出现这种情况。
我对cellForRowAtIndexPath中单元格的初始化是通常的模式:
编辑-整个cellForRowAtIndexPath:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let reuseIdentifier = "WorkOrderListCell"
let cell:WorkOrderListCell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier) as! WorkOrderListCell
如果滚动表格视图以使未渲染的单元格不在屏幕上,然后向后滚动,则该单元格将渲染。
我还通过将reloadRowsAtIndexPath包裹在主队列中来确保自己在主队列中,但这没有什么区别。
我想念什么?
答案 0 :(得分:2)
有时,第一次加载时表格视图存在问题。所以我建议两次重新加载tableView数据。您可以使用以下扩展名:
extension UITableView {
func reloadDataWithAutoSizingCellWorkAround() {
self.reloadData()
self.setNeedsLayout()
self.layoutIfNeeded()
self.reloadData()
}
}
在本期https://github.com/smileyborg/TableViewCellWithAutoLayoutiOS8/issues/10中找到哪个
或者您可以直接致电:
self.reloadData()
self.setNeedsLayout()
self.layoutIfNeeded()
self.reloadData()
答案 1 :(得分:0)
问题是我在单元格的内容视图中存在一个模糊的约束。仅当我在委托方法中添加setNeedsLayout以重新加载该行时才得到报告。一旦发现这一点,就很容易使用断点并调试视图。当我删除引起问题的距离约束时,所有渲染问题都消失了。感谢@DionizB帮助我走上了一条好路。