2017-07-12 8 views
4

私はあなたが別のsearchResultsControllerに結果を表示したいときにUISearchControllerを使用する方法を理解しようとしています - 私が見つけたガイド、ビデオ、チュートリアルはすべて現在のviewController検索結果を提示し、そのようUISearchControllerインスタンス化:Swift - 別個のsearchResultsControllerを持つUISearchController

let searchController = UISearchController(searchResultsController: nil) 

が、私は、ビューを暗くし、App Storeの検索で行うのと同じ方法で、検索結果で新しいのtableViewを提示したいです。それでは、私がやったことは、新しいtableViewControllerを作成し、それをストーリーボードIDを与えられ、その後、そのようにそれをインスタンス化されています動作するように思われる

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let resultsController = storyboard.instantiateViewController(withIdentifier: "searchResults") as! UITableViewController 
let searchController = UISearchController(searchResultsController: resultsController) 

。しかし、私はここからかなり立ち往生しています。 resultsControllerに検索結果を表示する方法、resultsControllerにcellForRowAtIndexPathを入れる方法などはわかりません。

ご協力いただきましてありがとうございます。それを把握するために管理

答えて

3

- searchControllerをインスタンス化する際に

1)は、この行を追加します。

searchController.searchResultsUpdater = resultsController 

2)そのようなあなたのresultsControllerにUISearchResultsUpdatingを追加します。

class resultsController: UITableViewController, UISearchResultsUpdating { 

3)この関数をresultsControllerにも追加してください:

func updateSearchResults(for searchController: UISearchController) { 

} 

そこから、あなたは、検索テキストを取得することでものを行う、とのtableViewをリロードすることができます

func updateSearchResults(for searchController: UISearchController) { 

    let searchText = searchController.searchBar.text! 

    //Do Stuff with the string 

    DispatchQueue.main.async { 

     self.tableView.reloadData() 

    } 

} 

は、それが誰かを役に立てば幸い!

関連する問題