2016-04-29 80 views
3

我需要在用户点击搜索栏后以模态方式呈现tableview,然后能够让tableview呈现用户搜索的内容,如Instagram的搜索功能。在谷歌上有很多关于如何制作搜索功能的教程,但没有关于用户点击搜索栏后如何呈现桌面视图的教程。我应该怎么做?如何在用户点击搜索栏时显示tableview

+0

我不明白你想要什么和它是什么解释[这里](https://www.raywenderlich.com/113772/uisearchcontroller-tutorial) – Chajmz

+0

之间的差异在这个例子中,搜索栏是在tableview中。我的搜索栏位于一个collectionview中,我希望在用户点击搜索栏后显示一个tableview。 –

+0

所以你可以添加一个TableView到你的控制器中,并且每当用户在searchBar中搜索某些东西时,都不会隐藏它? – Chajmz

回答

4

为了使UISearchController的搜索结果显示在您所选择的新UITableView,做到这一点:

let searchController = UISearchController(searchResultsController: myTableViewController) 

,而不是这样的:

let searchController = UISearchController(searchResultsController: nil) 

传递一个视图控制器构造允许UISearchController在适当的时间显示视图控制器(即当搜索处于活动状态时)。这是你需要做的。

传递nil意味着,我使用我自己的视图控制器(和表视图)

+0

是的,你可以在故事板中创建它,给它一个Storyboard ID并在代码中实例化它使用'UIStoryboard'的'instantiateViewControllerWithIdentifier(_ :)'函数。 – paulvs

+0

我应该将UISearchBarDelegate协议的代表设置为collectionview还是tableview? –

+0

至少只需要'UISearchResultsUpdating',只要用户更改搜索文本,就会调用其委托方法'updateSearchResultsForSearchController(_ :)'。你可以在你传递给UISearchController的构造函数的表视图控制器中实现这个功能来执行实际的搜索并重新加载表视图。 – paulvs

相关问题