swift - TableView返回视图时隐藏在搜索栏下的第一个单元格
问题描述
我在 TableView 上有一些奇怪的行为,希望有人可以帮助我。
我在导航中有一个带有搜索栏的 TableView。单元格导致详细视图。每当我在 TableView 中搜索然后点击结果单元格以转到详细视图时,从详细视图返回到 TableView 时,第一个单元格会在打开的搜索栏下方消失。
搜索:
在选择项目(详细视图)然后返回(使用导航栏)时,第一个单元格隐藏在搜索栏下:
需要注意的一些事项:
- 如果我在返回时打印 contentInset,它会给出 -44(隐藏 1 个单元格,如图所示)。我无法将 contentInset 设置回 0.0(或其他任何东西),因为它似乎没有改变任何东西。
tableView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
print(tableView.contentOffset.y)
// -44.0
如果第一个单元格被隐藏并且我通过向下然后再次向上推动表格来隐藏搜索栏,问题会自动消失并且 ContentInset 恢复到 0.0。
更新:我发现从后台返回应用程序后,视图也会自行恢复:
但是,我无法在代码中重现它。我试过了:
view.setNeedsLayout()
view.layoutIfNeeded()
tableView.reloadData()
解决方案
解决了,我设置searchController.hidesNavigationBarDuringPresentation = false
了,导致了这个bug。请参阅这篇文章的答案:在 iOS 11 上,导航项中的搜索栏在导航弹出时崩溃并卡在状态栏下。
谢谢您的帮助!
推荐阅读
- esri-maps - 如何在 ESRI 地图中将不透明度设置为选定的图形
- python - 使用 Python 3 编码和解码二进制数据以包含在 JSON 中
- docker - 使用 docker 交付桌面应用程序是个好主意吗?
- drop-down-menu - 重置下拉值(颤振)
- ruby-on-rails - 是否可以在 Ruby on Rails 中的视图内的模型上应用过滤器?
- python - 在测试开始时只运行一次 pytest 钩子
- sql - 编写查询的更有效方式
- python - 如何将 scipy curve_fit 约束为正结果
- angular - 我可以在不使用 catchError 的情况下使用拦截器重试调用以响应 http 调用吗
- javascript - 为什么 catch 块运行?