我希望使用本机iOS特性在地图页面中实现搜索完成。我找到了this answer帮你
然而,他们将其结果提供给一个桌面视图。我想以与地图相同的观点来展示结果。我还想知道如何查看用户选择哪个完成
这是我现在所有的相关代码
// Enable Searching
var searchController: UISearchController!
var request: MKLocalSearchRequest!
var search: MKLocalSearch!
var response: MKLocalSearchResponse!
// Autocompletion
var searchCompleter = MKLocalSearchCompleter()
var searchResults = [MKLocalSearchCompletion]()
override func viewDidLoad() {
searchCompleter.delegate = self
searchCompleter.filterType = MKSearchCompletionFilterType.LocationsOnly
super.viewDidLoad()
}
@IBAction func searchAction(sender: UIBarButtonItem) {
searchController = UISearchController(searchResultsController: nil) // nil as I want the autocompletion results to appear in this view
searchController.hidesNavigationBarDuringPresentation = false
self.searchController.searchBar.delegate = self
presentViewController(searchController, animated: true, completion: nil)
}
func completerDidUpdateResults(completer: MKLocalSearchCompleter) {
searchResults = completer.results
print(searchResults) // Shows me that this is working and that it is grabbing locations
// I need to instead give these results to the UISearchController to display
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String){
searchCompleter.queryFragment = searchBar.text!
}
func searchBarSearchButtonClicked(searchBar: UISearchBar){
searchBar.resignFirstResponder()
dismissViewControllerAnimated(true, completion: nil)
//request = MKLocalSearchRequest(completion: /* user's completion selection*/)
//Since I don't know the above, it currently just searches by user text
request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchBar.text
search = MKLocalSearch(request: request)
search.startWithCompletionHandler {
(response, error) -> Void in
if response == nil{
return
}
self.map.centerCoordinate = CLLocationCoordinate2D(latitude: response!.boundingRegion.center.latitude, longitude: response!.boundingRegion.center.longitude)
}
}发布于 2016-08-02 19:27:23
我无法在当前视图中显示结果,因为当前视图不是表视图。要在没有表视图的情况下显示它们,我必须定制一种显示它们的方法,我意识到只使用表视图并将对表视图的引用传递给searchResultsController而不是传递零更简单
https://stackoverflow.com/questions/38705936
复制相似问题