[英]Value of type 'UIViewController' has no member 'mapView'; did you mean 'loadView'?
I try to Search for locations using MKLocalSearchRequest in Swift4 (for ios 12). 我尝试在Swift4(适用于iOS 12)中使用MKLocalSearchRequest搜索位置。 When I append the
locationSearchTable.mapView = mapView
at the end of viewDidLoad I get the error. 当我在viewDidLoad的末尾附加
locationSearchTable.mapView = mapView
时,出现错误。
In ViewController 在ViewController中
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
var resultSearchController: UISearchController? = nil
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
let locationSearchTable = storyboard!.instantiateViewController(withIdentifier: "LocationSearchTable")
resultSearchController = UISearchController(searchResultsController: locationSearchTable)
resultSearchController?.searchResultsUpdater = locationSearchTable as! UISearchResultsUpdating
let searchBar = resultSearchController!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search for places"
navigationItem.titleView = resultSearchController?.searchBar
resultSearchController?.hidesNavigationBarDuringPresentation = false
resultSearchController?.dimsBackgroundDuringPresentation = true
definesPresentationContext = true
locationSearchTable.mapView = mapView
}...
In the LocationSearchTable 在LocationSearchTable中
import UIKit
import MapKit
class LocationSearchTable: UITableViewController {
var matchingItems: [MKMapItem] = []
var mapView: MKMapView? = nil
}
extension LocationSearchTable: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
guard let mapView = mapView,
let searchBarText = searchController.searchBar.text else { return }
let request = MKLocalSearch.Request()
request.naturalLanguageQuery = searchBarText
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.start { response, _ in
guard let response = response else {
return
}
self.matchingItems = response.mapItems
self.tableView.reloadData()
}
}
}...
Maybe locationSearchTable is not LocationSearchTable
class. 也许locationSearchTable不是
LocationSearchTable
类。
Try the following code 试试下面的代码
if let locationSearchTable = locationSearchTable as? LocationSearchTable {
locationSearchTable.mapView = mapView
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.