返回视图时 TableView 第一个单元格隐藏在搜索栏下

TableView first cell hidden under search bar when returning to view

我在 TableView 上有一些奇怪的行为,希望有人能帮助我。

我有一个在导航中带有搜索栏的 TableView。这些单元格指向详细视图。每当我在 TableView 中搜索然后点击结果单元格以转到详细信息视图时,从详细信息视图返回到 TableView 时,第一个单元格会在打开的搜索栏下方消失。

正在搜索:

选择项目(详细视图)然后返回(使用导航栏)时,第一个单元格隐藏在搜索栏下方:

一些注意事项:

tableView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
print(tableView.contentOffset.y)

// -44.0

如果第一个单元格被隐藏,我通过按下 table 然后再向上推来隐藏搜索栏,问题会自动消失并且 ContentInset 恢复到 0.0。

更新:我发现视图在从后台返回应用程序后也会自行恢复:

但是我无法在代码中重现它。我试过:

view.setNeedsLayout()
view.layoutIfNeeded()
tableView.reloadData()

已解决,我设置了searchController.hidesNavigationBarDuringPresentation = false,导致了bug。请参阅关于此 post 的答案:Search Bar in a Navigation Item collapses and gets stuck under status bar upon navigation pop, on iOS 11

感谢您的帮助!

将 dismiss(animated: true) 放入 tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)