首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的MKLocalSearch到表视图

Swift中的MKLocalSearch到表视图
EN

Stack Overflow用户
提问于 2016-09-22 05:51:19
回答 1查看 460关注 0票数 0

我正在寻找一个本地搜索“杂货店”,使用核心位置和MKLocalSearch。

我想我得到了“本地搜索”,但我不确定如何处理结果。我正在用swift3运行xcode8。

我希望用商店名称、地址填充这个表,并通过GPS坐标传递一个新的视图控制器,用于另一个“设置”过程。

我想要一个youtube链接(或说明),以正确设置表视图,然后从MKLocalSearch填充信息的代码。

谢谢!

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

回答 1

Stack Overflow用户

发布于 2016-09-28 17:01:01

从本地搜索响应中,您可以提取所需的必要数据,如坐标、商店名称和地址,如下所示:

首先初始化一个空数组,该数组将用于填充tableView:

代码语言:javascript
复制
var searchResults: [MKMapItem]()

接下来,使用您的搜索响应填充此列表,并使用新数据更新tableView:

代码语言:javascript
复制
search.start { (localSearchResponse, error) -> Void in
    searchResults = localSearchResponse.mapItems
    tableView.reloadData() // update the tableView data source
}

然后使用适当的结果格式更新您的tableView:

代码语言:javascript
复制
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时,您很可能希望这样做:

代码语言:javascript
复制
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)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39627133

复制
相关文章

相似问题

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