我想实现UISearchContoller,它使用swifty json从webservice JSON中搜索,就像苹果的appStore一样,当你搜索一个应用程序时,它加载而不加载到tableView
这是我在updateSearchResultsForSearchController方法中所做的:
func updateSearchResultsForSearchController(searchController: UISearchController) {
filterContentForSearchText(searchController.searchBar.text!)
}
func filterContentForSearchText(searchText: String) {
filteredContents = myStruct.filter{$0.name.rangeOfString(searchText) != nil
}
答案 0 :(得分:0)
发布更多代码会很好,就像您用来从Web服务获取结果一样。但是,无论如何,我会尝试引导您完成它。
我在使用UISearchBar及其代理方法之前已经完成了,用户按下了搜索按钮或输入,我会使用NSURLSession将用户的搜索词传递给API,解析了响应。
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
let searchText : String = searchBar.text
webService.getRecipe(ingredient: searchText, completionHandler: { (recipeArray) in
self.highProteinArray = recipeArray
dispatch_async(dispatch_get_main_queue(), {
self.collectionView.reloadData()
})
})
}
正如您所看到的,我使用回调来处理将新解析的数据设置为变量供以后使用,然后重新加载collectionView。这样,当您等待Web服务的响应然后解析它时,tableView / collectionView将加载并设置自己,一旦完成,您只需重新加载以显示新数据。
要添加一些额外的内容,你甚至可以在你的cellForItemAtIndexPath或cellForRowAtIndexPath中添加一个淡入淡出的动画,无论你使用哪个。