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

Posted

技术标签:

【中文标题】TableView返回视图时隐藏在搜索栏下的第一个单元格【英文标题】:TableView first cell hidden under search bar when returning to view 【发布时间】:2019-04-07 16:14:11 【问题描述】:

我在 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()

【问题讨论】:

我猜这是因为滚动视图插图。签出这个答案***.com/questions/24335497/… 还有其他方法可以解决,但上面似乎是最简单的一种。 你是如何实现你的tableView的?您是使用UITableViewController 还是手动添加UITableView @Rahul:这似乎与我的问题不同。我已经尝试切换automaticallyAdjustsScrollViewInsets @RichAppz UITableViewController。我以编程方式在viewDidLoad 中添加搜索栏。我在其他视图中也有相同的实现,但它没有相同的错误,也许是导致它的详细视图。 【参考方案1】:

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

感谢您的帮助!

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于TableView返回视图时隐藏在搜索栏下的第一个单元格的主要内容,如果未能解决你的问题,请参考以下文章

从导航栏下的第二个视图

iPhone:在导航栏下隐藏自定义视图

搜索控制器处于活动状态时出现表格视图时隐藏的第一行

标签更改后导航栏下的表格视图

为啥 wkwebview 隐藏在导航栏下

展开 segue 后,swift 2 搜索栏不会隐藏