Swift 4 : 如何在添加引脚之前等待加载 MKMapView
Swift 4 : how to wait for a MKMapView to be loaded before adding pins
嗯,标题很漂亮self-explanatory。我有一个具有不同视图的小应用程序,它一直崩溃,我认为这是因为我试图在创建地图之前在地图上添加图钉(调试器告诉 object 为零)。如何等待地图加载并显示在当前视图中?这是我的应用程序 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
委托设置为 self
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
}
嗯,标题很漂亮self-explanatory。我有一个具有不同视图的小应用程序,它一直崩溃,我认为这是因为我试图在创建地图之前在地图上添加图钉(调试器告诉 object 为零)。如何等待地图加载并显示在当前视图中?这是我的应用程序 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
委托设置为 self
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
}