2014-12-19 14 views
2

我想用swift(iOS 8)创建我的第一个iOS应用程序。插入行后,UITableViewCell动态高度中断

我有一个UITableView和一个CustomCell。 该应用程序是一种新闻股票。启动应用程序后,它会加载来自Web服务器的所有新闻并将新闻保存到数组中。 自定义单元格具有动态高度。我在tableView:cellForRowIndexPath中打电话给cell.layoutIfNeeded()以使动态细胞高度正确工作。否则,单元格高度显示不正确。我发现提示here处于堆栈溢出状态。 图片:After getting all news, the cells are displayed correctly

随着SIOSocket我得到一个新消息的事件,我想把它插入UITable。 所以我创建了一个方法,将新闻插入到我的数组中,并调用,endUpdates()之间的tableView.insertRowsAtIndexPath。 这里是问题出现的地方。新的单元格显示正确,但所有其他可见单元格缩减为默认单元格高度(44pt)。 图片:After I added a new entry, the old cells are too small 一些滚动后,细胞更新,现在再次正确显示。

当我不使用insertRowsAtIndexPath,但tableView.reloadData(),那么它的工作。但我认为为每个新消息调用reloadData并不是一种好的方式。当然,重新加载后没有动画...

任何人都可以请解释为什么会发生这种情况,是否有解决方案来解决这个问题? 谢谢

回答

5

当我将estimatedRowHeight设置为任何值时,问题就消失了。

tableView.estimatedRowHeight = 44 

viewDidLoad方法完全解决了我的问题。

+0

这对我不起作用。如果您在“设置应用/辅助功能”中将文字大小设置得非常大,这是否适用于您? – SAHM 2015-03-30 18:32:31

1

带自动尺寸的节标题视图可能会产生这种类型的问题 因此,删除下面的行将解决问题。

tableView.sectionHeaderHeight = 10; 
tableView.estimatedSectionHeaderHeight = UITableViewAutomaticDimension; 

具有自动尺寸的行不会产生任何问题。

tableView.estimatedRowHeight = 15; 
tableView.rowHeight = UITableViewAutomaticDimension;