2017-03-17 2 views
0

Hier bekommen das Szenario ist, ich habe.auf App starten Standort in iOS

Bei App Start zum ersten Mal brauche ich den Benutzer Standort, um eine Liste der Orte zu holen, die ihnen am nächsten sind.

Wenn sie den Zugriff auf den Standort zulassen, möchte ich ihren Standort verwenden, um ihnen die Liste der Orte anzuzeigen.

Ich mache einen Anruf, um die Liste in didUpdateLocation zu aktualisieren, aber die Liste ist immer leer, auch nach dem ersten Zugriff. Wenn ich die App das zweite Mal öffne, ist der Standort verfügbar und ich habe die Koordinaten und kann damit fortfahren, die Liste zu zeigen, die funktioniert.

Ich habe auch versucht, den Code ausgeführt wird die Liste in Thesen 2 Delegatmethoden aufzufüllen:

func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus){ 
    // switch statements then   
    fectchPlacesAndPopulateList() 
} 


func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 
     print("locationManager") 
     Utils.creatErrorMessage(title: "aaa", message: "aaaa", vc: self) 

     let userLocation:CLLocation = locations[0] as! CLLocation 
     let lng = userLocation.coordinate.longitude; 
     let lat = userLocation.coordinate.latitude; 
     let coordinates = "\(lat),\(lng)" 
     print("update locations = \(coordinates)") 
     fectchPlacesAndPopulateList() 
    } 

var locationManager = CLLocationManager() 
    override func viewDidLoad() { 
     super.viewDidLoad() 


if CLLocationManager.locationServicesEnabled() { 


       locationManager.delegate = self 
       locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
       locationManager.startUpdatingLocation() 
} 
} 
+0

Wird 'didUpdateLocations' aufgerufen? – NobodyNada

+0

@NobodyNada, nein, es heißt nicht – raklos

+0

Ich nehme an, dass es an einem bestimmten Punkt aufgerufen wird, aber nicht nach dem Tippen auf zulassen. Ich muss die Liste plumpulieren, sobald ich den Standort habe – raklos

Antwort

1

Die Signatur von didUpdateLocations ist falsch für Swift 3, beachten Sie den führenden Unterstrich, die (nicht optional) Typ des Managers und der Rückgabetyp

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

drei Stunden herum rumspielen und es kam zu einer Unterstreichung und Rückkehr Typ! ... Danke für die Rettung meiner Vernunft, Lektion gelernt! – raklos

Verwandte Themen