swift 4 : how to wait for a MKMapView to be loaded before adding pins

标签 swift multithreading view wait

嗯,标题很不言自明。我有一个具有不同 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/

相关文章:

swift - Swift 如何存储结构数组?

swift - Apple Watch 如何监听 iPhone 上的数据变化?

java - 在 Activity 切换的情况下停止(线性)可运行的 "nice"方法是什么?

java - 电位器圆形按钮

ios - Swift 改变 Coredata 的值,而不是创建新的

multithreading - 使用Spock测试线程并发

java - 多线程:2个任务

asp.net-mvc - MVC导航到其他 Controller View

c# - Entity Framework - 使用 View 加载过多数据

SwiftUI - 选择器未选择值