搜索栏未显示在导航栏 iOS 11 上

Posted

技术标签:

【中文标题】搜索栏未显示在导航栏 iOS 11 上【英文标题】:Search bar not showing up on the navigation bar iOS 11 【发布时间】:2018-07-04 15:53:57 【问题描述】:

我正在将一个 viewController 推到我想要一个 searchBar 的地方,但根本没有显示搜索栏。下面是代码。我错过了什么吗?

var searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search here..."
definesPresentationContext = true
searchController.searchBar.delegate = self
searchController.searchBar.sizeToFit()
if #available(ios 11.0, *) 

    self.navigationItem.searchController = searchController
 else 
    // Fallback on earlier versions
    navigationItem.titleView = searchController.searchBar
    navigationItem.titleView?.layoutSubviews()

【问题讨论】:

我使用了你的代码,它正在工作 你是如何推动新的视图控制器的? 我正在使用这个 - let destinationVC = storyboard.instantiateViewController(withIdentifier:"someVC") vc.show(destinationVC, sender: self) 通过添加这一行解决了这个问题 - navigationItem.hidesSearchBarWhenScrolling = false 除非您自己创建,否则我认为您不能将它放在导航栏上方 【参考方案1】:

您需要将此行添加到您的代码中:

navigationItem.hidesSearchBarWhenScrolling = false

这会在滚动时移除隐藏的 searchBar,并在推送视图控制器时显示它。

【讨论】:

【参考方案2】:

因此,navigationItem.hidesSearchWhenScrolling 仅在您设置 navigationItemsearchController 属性时有效,而不是在您将 navigationItem.titleView 设置为 searchBar 时有效。

【讨论】:

以上是关于搜索栏未显示在导航栏 iOS 11 上的主要内容,如果未能解决你的问题,请参考以下文章

导航栏未显示在 childViewController 内

导航栏未显示在网页上

SwiftUI - 导航栏未显示在模态导航视图中

Bootstrap 导航栏未正确定位内部的某些元素

UIsearchBar 取消按钮导致导航栏未隐藏

导航栏未填充 - iOS7