2016-08-01 1 views
0

Я ищу, чтобы реализовать завершение поиска на странице карты, используя собственные функции iOS. Я нашел this answer, который помогКак передать результаты MKLocalSearchCompletion в UISearchController

Однако они придают свои результаты табло. Я хочу представить результаты в том же представлении, что и карта. Я также интересно, как увидеть завершение которого пользователь выбирает

Вот все соответствующий код у меня сейчас

// 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) 
    } 
} 

ответ

0

Я не мог представить результаты в текущем виде, поскольку текущий вид не был табличный вид. Чтобы представить их без табличного представления, мне пришлось бы сделать собственный способ их отображения, и я понял, что проще просто использовать представление таблицы и передать ссылку на это в searchResultsController вместо передачи nil

Смежные вопросы