Метод didUpdateLocations не вызывается - PullRequest
0 голосов
/ 28 января 2019

Мой метод didUpdateLocations никогда не вызывается?Почему это?Я добавил ключи в info.plist

Вот мой код:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    var locationManager = CLLocationManager()

    locationManager.requestWhenInUseAuthorization()

    if CLLocationManager.locationServicesEnabled() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
        locationManager.startUpdatingLocation()
    }



}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let locValue:CLLocationCoordinate2D = manager.location!.coordinate

    lat = locValue.latitude
    long = locValue.longitude

}

1 Ответ

0 голосов
/ 28 января 2019

Сделать locationManager переменной класса.Вы объявляете это как локальную переменную в viewDidLoad, что означает, что она будет немедленно освобождена, потому что нет никаких сильных ссылок на нее вне этой функции.

class YourViewController : UIViewController, CLLocationManagerDelegate 
{
    var locationManager : CLLocationManager?

    override func viewDidLoad() 
    {
        super.viewDidLoad()

        locationManager? = CLLocationManager()

        locationManager?.requestWhenInUseAuthorization()

        if CLLocationManager.locationServicesEnabled()
        {
            locationManager?.delegate = self
            locationManager?.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
            locationManager?.startUpdatingLocation()
        }
    }
}
...