2016-09-21 51 views
0

我正在寻找一个当地的“杂货店”,使用核心位置和MKLocalSearch。MKLocalSearch在Swift中的表格视图

我想我得到了“本地搜索”,但我不知道如何处理结果。我使用swift3运行xcode8。

我正在寻找填充此表与商店名称,地址,并传递GPS坐标新的视图控制器的另一个“设置”过程。

我很喜欢youtube链接(或指令)来正确设置tableview,然后从MKLocalSearch中填充信息。

谢谢!

func updateSearchResultsForSearchController(){ 
    let request = MKLocalSearchRequest() 
    let span = MKCoordinateSpan(latitudeDelta: 0.025, longitudeDelta: 0.025) 

    let region = MKCoordinateRegion(center: (locationManager.location?.coordinate)!, span: span) 

    request.naturalLanguageQuery = "Grocery" 

    request.region = region 

    let search = MKLocalSearch(request: request) 

    search.start { (localSearchResponse, error) -> Void in 
     print(localSearchResponse) 
     //Code needed here to fill table view 
    } 
} 

回答

0

从本地搜索响应可以如下提取你需要像坐标必要的数据,商店的标题和地址:

首先初始化一个空数组,这将被用来填充您的tableView :

var searchResults: [MKMapItem]() 

下一页填充此列表与您的搜索响应和更新的tableView用新的数据:

search.start { (localSearchResponse, error) -> Void in 
    searchResults = localSearchResponse.mapItems 
    tableView.reloadData() // update the tableView data source 
} 

然后用结果的相应的格式化更新您的tableView:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let searchResult = searchResults[indexPath.row] 
    let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil) 
    cell.textLabel?.text = searchResult.title 
    cell.detailTextLabel?.text = searchResult.subtitle 
    return cell 
} 

最后,如果你想通过坐标数据到其他的viewController,您可以通过将整个阵列或超过可能你会想这样做在选择单元格并传递与单元格关联的mapItem时执行此操作:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let searchResult = searchResults[indexPath.row] 
    let groceryViewController = // initialise the new viewController 
    groceryViewController.coordinate = searchResult.placemark.coordinate 

    // push the new viewController 
    self.navigationController?.pushViewController(groceryViewController, animated: true) 
} 
相关问题