iOS 8 UITableView 单元格在选中时会跳转

Posted

技术标签:

【中文标题】iOS 8 UITableView 单元格在选中时会跳转【英文标题】:iOS 8 UITableView cells jump when selected 【发布时间】:2015-02-01 03:17:57 【问题描述】:

我有一个非常标准的 UITableView,它使用自动调整单元格大小

// Set the height of the table view cells
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0;

当我将 segue 推送到新的视图控制器时,表格视图会跳转到不同的位置。我已经使用 tableView 方法尝试了estimatedRowHeight、rowHeight,但什么都没有……

我已经阅读了这些内容,但仍然没有任何效果。有人吗?

•Table View Cells jump when selected on ios 8

•iOS 8 Auto cell height - didSelectRowAtIndexPath causes UItableview to jump to top

•IOS 8 UITableView self-sizing cells jump/shift visually when a new view controller is pushed

【问题讨论】:

你实现了方法 didSelectRowAtIndexPath: 吗? 是的,我已经实现了。 你能分享一下吗?似乎问题就在那里(因为问题是当你选择一个单元格时) 我为这个答案发布的代码应该会有所帮助。当 push segue 发生时,我再也没有看到桌子跳了(要么是因为 bug 已修复,要么我的估计高度非常准确):***.com/a/28267459/4151918 这似乎与此重复:***.com/questions/27996438/… 查看我的答案 【参考方案1】:

这是一个已知问题。

相信你会发现estimatedRowHeight与实际高度相差越大,push segue发生时桌子就会跳得越厉害。解决方法是使用更好的估计(或实现tableView:estimatedHeightForRowAtIndexPath: 并返回确切的高度)。

【讨论】:

你能分享一个这样的例子吗? 您可以使用在自动调整单元格出现之前在tableView:heightForRowAtIndexPath: 中使用的相同代码。但我建议首先尝试使用更准确的估计行高度,特别是如果您的实际行不是 44 点高。您可能会发现,更好的估计是解决该问题的足够好的解决方法。

以上是关于iOS 8 UITableView 单元格在选中时会跳转的主要内容,如果未能解决你的问题,请参考以下文章

UITableView - BeginUpdates/EndUpdates 动画设置

ios 7 uitableview 所选单元格在 beginupdates 后失去边框

iOS - 使 UITableView 与自定义单元格在按钮单击时可编辑

UITableView 中的单元格在 iOS 中选择之前不会更新(swift)

为啥我的 UITableView 单元格在滚动时重叠?

表格单元扩展滞后