如何将 UISearchController 搜索栏设置为不是 tableHeaderView 或 navigationItem.titleview 的视图?
Posted
技术标签:
【中文标题】如何将 UISearchController 搜索栏设置为不是 tableHeaderView 或 navigationItem.titleview 的视图?【英文标题】:How do I set the UISearchController's searchBar to a view that isn't the tableHeaderView or navigationItem.titleview? 【发布时间】:2015-06-10 12:48:10 【问题描述】:我试图在表格滚动时保持搜索栏处于视图中。目前,我将它作为表头放置在 tableview 中,它应该可以正常工作,但是当你沿着桌子走下去时,搜索栏当然会滚动到屏幕外。我想我可以简单地修改这个代码示例:
How do I use UISearchController in ios 8 where the UISearchBar is in my navigation bar and has scope buttons?
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.delegate = self
searchController.searchBar.delegate = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
tableview.tableHeaderView = searchContoller.searchBar // How to put it elsewhere?
//Alternative that also works
navigationItem.titleView = searchController.searchBar
我们的想法是采取其他观点并做
otherview = searchController.searchBar
例如,一个 UISearchBar 的出口,或一个空白的 UIView,或类似的东西。
但如果我这样做,它不会显示 searchBar。它似乎只能作为表格的标题视图或作为 navigationItem.titleView。
我错过了什么吗?
【问题讨论】:
如果你在tableview上方有一个空白的UIView位置,假设你有一个名为searchContainer
的空白UIView的出口,那么你可以通过searchContainer.addSubview(searchController.searchBar)
将搜索栏添加到该视图中跨度>
没错!添加并回答,您将获得更多分数。
【参考方案1】:
如果你有一个空白 UIView 放在 tableview 上方。
假设您有一个名为searchContainer
的空白 UIView 的出口。
然后您可以通过添加以下行将UISearchController
的搜索栏添加到该视图
searchContainer.addSubview(searchController.searchBar)
【讨论】:
在视图控制器中添加 searchBar 对我来说效果很好,但是每次我尝试编辑时 searchResultsController 都不会触发,只是第一次。但是,如果我使用 barButtonItem 来启动 searchBar,那么每次都会触发 searchResultsController 和实际搜索。我在这里错过了什么吗? 有时您应该使用definesPresentationContext = true
和extendedLayoutIncludesOpaqueBars = true
设置您的viewDidLoad
方法,以防止一些布局错误。
有没有办法在添加为子视图之前/之后设置 searchController.searchBar 的高度和宽度?以上是关于如何将 UISearchController 搜索栏设置为不是 tableHeaderView 或 navigationItem.titleview 的视图?的主要内容,如果未能解决你的问题,请参考以下文章
聚焦时如何修复 UISearchController 搜索栏调整大小?
如果没有初始搜索栏,如何呈现 UISearchController?
如何使用代码将 UISearchController Searchbar 放到导航栏上