2017-05-14 2 views
0

J'ai appris à utiliser swift pour créer une application et je voulais créer une application de base qui vous indique votre vitesse. Cependant, je n'arrive pas à comprendre comment l'obtenir pour mettre à jour la vitesse, pour le moment cela me donne seulement la vitesse initiale et ne met jamais à jour l'étiquette avec la vitesse actuelle. Voici le code que je dois beaucoup:Comment puis-je faire en sorte que Swift mette continuellement à jour la vitesse?

@IBOutlet var speedLabel: UILabel! 
@IBOutlet var countLabel: UILabel! 

let locationManager = CLLocationManager() 
var speed: CLLocationSpeed = CLLocationSpeed() 

override func viewDidLoad() { 

    super.viewDidLoad() 

    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.startUpdatingLocation() 

    locationManager.startUpdatingLocation() 
    speed = locationManager.location!.speed 

    if speed < 0 { 
     speedLabel.text = "No movement registered" 
    } 
    else { 
     speedLabel.text = "\(speed)" 
    } 


} 

Répondre

0

Utilisez la méthode du délégué https://developer.apple.com/reference/corelocation/cllocationmanagerdelegate

func locationManager(_ manager: CLLocationManager, 
     didUpdateLocations locations: [CLLocation]) { 

     guard let speed = manager.location?.speed else { return } 
     speedLabel.text = speed < 0 ? "No movement registered" : "\(speed)" 
} 

vous appellent cela deux fois locationManager.startUpdatingLocation(), vous pouvez également supprimer un appel

+0

Merci! ça a marché! – TomEcho