如何将搜索栏添加到集合视图控制器?

Posted

技术标签:

【中文标题】如何将搜索栏添加到集合视图控制器?【英文标题】:How to add a search bar to a collection view controller? 【发布时间】:2019-09-04 02:00:44 【问题描述】:

如何在 ios 12 中为集合视图控制器添加搜索栏?我意识到这应该是一个简单的问题,但我很难找到一个看起来不成熟的例子。

这可以只使用搜索栏或搜索控制器。我不知道在 iOS 12 中最好的方法应该是什么。我也想以编程方式执行此操作。

【问题讨论】:

【参考方案1】:

使用 UISearchController。将集合视图控制器放入导航控制器,并设置其navigationItemsearchController。现在搜索栏将出现在导航栏中。您可以配置一些东西,以便搜索栏仅在用户一直向下滚动集合视图时出现;这实际上与使搜索栏位于集合视图的顶部相同。这是一个不错的界面,也是 Apple 希望您使用的界面。

【讨论】:

谢谢!这是有道理的,但让它出现并不困难。您的意思是设置导航项标题视图吗? self.navigationItem.titleView = searchController.searchBar 没有。那是老办法。 iOS 11 中引入的 searchController 属性更加简洁,并带有一些出色的界面行为。【参考方案2】:

我有点糊涂了,把UISearchBar放在UICollectionView里面是一件很奇怪的事情。因为UICollectionView显示器使用UICollectionViewCell,所以每个UICollectionViewCell都可以重复使用。

所以我猜你不会输入UICollectionView,而是通过SearchBar搜索结果,使用UICollectionView显示结果。

抱歉,我的网络无法上传图片。布局可能是UIViewController 中的UISearchBarUICollectionView

- UIViewController
  - UISearchBar
  - UICollectionView

UISearchBarDelegate代理方法中,可以在触发搜索时执行网络请求,并在列表中刷新网络请求返回的数据。

如果你对列表的布局要求不是很高,可以使用UITableViewUICollectionView需要设置UICollectionViewLayout稍微复杂一些。

【讨论】:

【参考方案3】:

在代码中吧?使用故事板,您需要做的就是添加搜索栏并将其连接到 IBAction 插座。当它发生变化时,您将值传递给谓词并重新加载您的集合。委托和其他 Mac 搜索栏选项可以在代码中设置,也可以直接在情节提要中设置。对不起,我不能为你完全烤好!

【讨论】:

以上是关于如何将搜索栏添加到集合视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确配置添加到现有表视图控制器的搜索栏?

单击搜索栏上的取消按钮时如何弹出本端视图控制器?

添加子视图后显示上一个视图控制器的页面视图控制器

搜索栏未显示在视图控制器中

嵌套视图中的搜索栏和搜索栏控制器 (iOS)

如何获取集合视图来控制表格视图中的搜索结果?