我有一个UITableView
分为几个部分,其中一些我试图使其可折叠 - 点击一个部分的标题,该部分中的单元格将展开/折叠。
我在tableView.insertRowsAtIndexPaths(indexPaths, withRowAnimation: .Automatic)
和self.tableView.beginUpdates()
区域内使用self.tableView.endUpdates()
执行此操作。
第一次打开一个部分时(即第一次向部分添加行),内部的单元格没有正确布局。我得到的是一个标准44pts高的单行单元格,而不是多行文本和高度扩展到符合所需内容的单元格,其文本用省略号截断。
单元格的高度通常由estimatedHeightForRowAtIndexPath
返回UITableViewAutomaticDimension
控制。
当单元格在屏幕上滚动或者某个部分关闭并重新打开时,单元格似乎会重新绘制并显示正确的布局。
在将新单元格动画化为视图之前,有没有办法让单元格/节/表重绘自己?
我尝试self.tableView.reloadData()
和reloadRowsAtIndexPaths
之类的内容未成功,但我可能没有正确使用这些内容。
我认为我有正确的代码,但由于缺少更好的术语,它可能在“渲染序列”中的错误位置。
非常感谢!
答案 0 :(得分:1)
我遇到了同样的问题,并且能够通过为tableView设置一个estimatedRowHeight来解决这个问题。默认值为0,因此将其设置为正值似乎可以解决问题:
tableView.estimatedRowHeight = 44.0;
答案 1 :(得分:0)
self.mainTableView.beginUpdates()
self.mainTableView.insertRowsAtIndexPaths(indexPaths, withRowAnimation: UITableViewRowAnimation.Fade)
self.mainTableView.reloadRowsAtIndexPaths(self.mainTableView.indexPathsForVisibleRows!, withRowAnimation: UITableViewRowAnimation.Fade)
self.mainTableView.endUpdates()
这对我来说非常适合。