swift - 使用 MKLocalSearch 填充 UITableView
问题描述
我是一个新程序员。尝试使用在我的搜索中返回的数据来填充UITableView
. 目前,我只需将地图放大到带注释的区域,但想呈现信息的表格视图。
import UIKit
import MapKit
class LocationSearch: UIViewController, UISearchBarDelegate {
var searchResults = [MKMapItem]()
@IBOutlet weak var myMapView: MKMapView!
@IBOutlet var tableView: UITableView!
@IBAction func searchButton(_ sender: Any)
{
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
present(searchController, animated: true, completion: nil)
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
{
//Ignoring user
UIApplication.shared.beginIgnoringInteractionEvents()
//Activity Indicator
let activityIndicator = UIActivityIndicatorView()
activityIndicator.style = UIActivityIndicatorView.Style.gray
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.startAnimating()
self.view.addSubview(activityIndicator)
//Hide search bar
searchBar.resignFirstResponder()
dismiss(animated: true, completion: nil)
//Create the search request
let searchRequest = MKLocalSearch.Request()
searchRequest.naturalLanguageQuery = searchBar.text
let activeSearch = MKLocalSearch(request: searchRequest)
activeSearch.start { (response, error) in
activityIndicator.stopAnimating()
UIApplication.shared.endIgnoringInteractionEvents()
if response == nil
{
print("ERROR")
}
else
{
//Remove annotations
let annotations = self.myMapView.annotations
self.myMapView.removeAnnotations(annotations)
//Getting data
let latitude = response?.boundingRegion.center.latitude
let longitude = response?.boundingRegion.center.longitude
//Create annotation
let annotation = MKPointAnnotation()
annotation.title = searchBar.text
annotation.coordinate = CLLocationCoordinate2DMake(latitude!, longitude!)
self.myMapView.addAnnotation(annotation)
//Zooming in on annotation
let coordinate:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude!, longitude!)
let span = MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)
let region = MKCoordinateRegion(center: coordinate, span: span)
self.myMapView.setRegion(region, animated: true)
}
解决方案
推荐阅读
- python-3.x - 如何按不同列合并数据框行
- javascript - 如何停止复制下拉列表的日期?我使用了一个while循环
- powershell - PowerShell While循环多个条件不起作用
- karate - 试图断言 2 个动态响应
- python - 如何使用包含我要访问的索引号的数组获取 numpy 数组中的所有值
- javascript - 在添加为选项卡的“内容页面”中获取 Microsoft Team 上下文
- mysql - 查询不工作。也许“分组依据”有问题。怎么了?
- yocto - rootfs 中的 Yocto helloword 配方
- regex - 正则表达式替换特定字符后的字符串?
- java - 如何使用 HSSF apache poi (JAVA) 上的相关参考克隆函数