如何将搜索栏添加到集合视图控制器?
Posted
技术标签:
【中文标题】如何将搜索栏添加到集合视图控制器?【英文标题】:How to add a search bar to a collection view controller? 【发布时间】:2019-09-04 02:00:44 【问题描述】:如何在 ios 12 中为集合视图控制器添加搜索栏?我意识到这应该是一个简单的问题,但我很难找到一个看起来不成熟的例子。
这可以只使用搜索栏或搜索控制器。我不知道在 iOS 12 中最好的方法应该是什么。我也想以编程方式执行此操作。
【问题讨论】:
【参考方案1】:使用 UISearchController。将集合视图控制器放入导航控制器,并设置其navigationItem
的searchController
。现在搜索栏将出现在导航栏中。您可以配置一些东西,以便搜索栏仅在用户一直向下滚动集合视图时出现;这实际上与使搜索栏位于集合视图的顶部相同。这是一个不错的界面,也是 Apple 希望您使用的界面。
【讨论】:
谢谢!这是有道理的,但让它出现并不困难。您的意思是设置导航项标题视图吗?self.navigationItem.titleView = searchController.searchBar
没有。那是老办法。 iOS 11 中引入的 searchController
属性更加简洁,并带有一些出色的界面行为。【参考方案2】:
我有点糊涂了,把UISearchBar
放在UICollectionView
里面是一件很奇怪的事情。因为UICollectionView
显示器使用UICollectionViewCell
,所以每个UICollectionViewCell
都可以重复使用。
所以我猜你不会输入UICollectionView
,而是通过SearchBar搜索结果,使用UICollectionView
显示结果。
抱歉,我的网络无法上传图片。布局可能是UIViewController
中的UISearchBar
和UICollectionView
。
- UIViewController
- UISearchBar
- UICollectionView
在UISearchBarDelegate
代理方法中,可以在触发搜索时执行网络请求,并在列表中刷新网络请求返回的数据。
如果你对列表的布局要求不是很高,可以使用UITableView
,UICollectionView
需要设置UICollectionViewLayout
稍微复杂一些。
【讨论】:
【参考方案3】:在代码中吧?使用故事板,您需要做的就是添加搜索栏并将其连接到 IBAction 插座。当它发生变化时,您将值传递给谓词并重新加载您的集合。委托和其他 Mac 搜索栏选项可以在代码中设置,也可以直接在情节提要中设置。对不起,我不能为你完全烤好!
【讨论】:
以上是关于如何将搜索栏添加到集合视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章