嗯,标题很不言自明。我有一个具有不同 View 的小应用程序,它不断崩溃,我认为这是因为我试图在创建 map 之前在 map 上添加图钉(调试器告诉对象为零)。如何等待 map 加载并显示在当前 View 上?这是我的应用程序的 ViewController 的代码:
import UIKit
import MapKit
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
let coordinate_Mines = CLLocationCoordinate2D(latitude: 43.445258, longitude: 5.479400) //à remplacer ensuite par dernier coordonnés GPS utilisateur
let region = MKCoordinateRegionMakeWithDistance(coordinate_Mines, 1000, 1000)
mapView.setRegion(region, animated: true)
var pinCapteurTest: AnnotationPin!
pinCapteurTest = AnnotationPin(title: "Capteur de test", subtitle: "Entrée de l'école", coordinate: CLLocationCoordinate2D(latitude: 43.445202, longitude: 5.479456)) //coord capt test
mapView.addAnnotation(pinCapteurTest)
}
}
这是我的 MainStoryBoard : enter image description here
谢谢大家:)
最佳答案
您可以使用 MKMapViewDelegate
扩展 ViewController
,下面的方法是您可以添加注释的地方。
public func mapViewDidFinishLoadingMap(_ mapView: MKMapView) {
}
在 viewDidLoad 中将 mapView
委托(delegate)设置为 self
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
}
关于 swift 4 : how to wait for a MKMapView to be loaded before adding pins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49791184/