【发布时间】:2014-12-19 01:10:28
【问题描述】:
我正在尝试使用 swift (iOS 8) 制作我的第一个 iOS 应用程序。
我有一个 UITableView 和一个 CustomCell。
该应用程序是一种新闻行情。启动应用程序后,它会从 Web 服务器加载所有新闻并将新闻保存到数组中。
自定义单元格具有动态高度。我在tableView:cellForRowIndexPath 中调用cell.layoutIfNeeded() 以使动态单元格高度正常工作。否则单元格高度无法正确显示。我在堆栈溢出时发现了提示here。
图片:After getting all news, the cells are displayed correctly
使用 SIOSocket,我得到一个带有新消息的事件,我想将它插入 UITable。
所以我创建了一个将新闻插入我的数组并在beginUpdates()、endUpdates() 之间调用tableView.insertRowsAtIndexPath 的方法。
这就是问题开始的地方。新单元格正确显示,但所有其他可见单元格都缩小到默认单元格高度 (44pt)。
图片:After I added a new entry, the old cells are too small
滚动一些单元格后,单元格已更新,现在再次正确显示。
当我不使用insertRowsAtIndexPath,而是使用tableView.reloadData() 时,它就可以工作了。但我认为为每条新消息调用 reloadData 并不是一种好的风格。而且重载后当然没有动画了……
谁能解释一下为什么会发生这种情况,有什么解决方案可以解决这个问题吗? 谢谢
【问题讨论】:
标签: ios uitableview swift autolayout