类型“的UIViewController”的值没有任何构件“的MapView”;您的意思是“的loadView”?

问题描述 投票:0回答:1

我尝试搜索斯威夫特4使用MKLocalSearchRequest位置(IOS 12)。当我追加qazxsw poiat viewDidLoad中结束时,我得到的错误。

在视图控制器

locationSearchTable.mapView = mapView

在LocationSearchTable

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

    }...


mkmapview mklocalsearch
1个回答
0
投票

也许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() } } }... 类。

试试下面的代码

LocationSearchTable
© www.soinside.com 2019 - 2024. All rights reserved.