首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MKLocalSearchCompletion结果给UISearchController

如何将MKLocalSearchCompletion结果给UISearchController
EN

Stack Overflow用户
提问于 2016-08-01 18:43:25
回答 1查看 1.5K关注 0票数 0

我希望使用本机iOS特性在地图页面中实现搜索完成。我找到了this answer帮你

然而,他们将其结果提供给一个桌面视图。我想以与地图相同的观点来展示结果。我还想知道如何查看用户选择哪个完成

这是我现在所有的相关代码

代码语言:javascript
复制
// 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)
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 19:27:23

我无法在当前视图中显示结果,因为当前视图不是表视图。要在没有表视图的情况下显示它们,我必须定制一种显示它们的方法,我意识到只使用表视图并将对表视图的引用传递给searchResultsController而不是传递零更简单

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38705936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档