2016-04-29 81 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

相關問題