ios – 在Swift代码中没有调用CLLocationManagerDelegate方法

我正在尝试创建一个简单的应用程序,找出有人所在的区域,但我被卡住了,因为当应用程序运行并找到位置时,没有调用任何CLLocationManagerDelegate方法.

如果它是相关的,我也没有看到对话框要求我授予应用程序使用位置的权限.

这是我到目前为止所拥有的 –

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

@IBOutlet weak var locationLabel : UILabel!

var locationManager = CLLocationManager()
let geocoder = CLGeocoder ()

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

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

override func viewDidDisappear(animated: Bool) {
  locationManager.stopUpdatingLocation()
}

override func didReceiveMemoryWarning() {
  super.didReceiveMemoryWarning()
  // Dispose of any resources that can be recreated.
}

func locationManager(manager: CLLocationManager!, didUpdateLocations locations:  [AnyObject]!) {
  geocoder.reverseGeocodeLocation(locations.last as CLLocation, completionHandler: {(placemark, error) in
    if (error != nil) {
      println("Error")
    } else {
      let pm = placemark.first as CLPlacemark

      println(pm)
    }
  })
}

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
    println("Epic Fail")
  } 
}

我已经放入了断点,所以我知道代码永远不会被调用.我已经进入并在应用程序运行时手动启用了位置服务.

最佳答案 试着打电话

func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!)

而不是你现在正在制作的代表电话……
我有问题:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations:  [AnyObject]!)

以及.但使用上面的委托调用解决了我的问题.

编辑(没有正确阅读问题……)

你永远不会要求许可,这就是为什么你没有获得弹出窗口的原因.请致电以下人员:
locationManager.requestWhenInUseAuthorization()

这是非常重要的一步,如果您没有要求用户授权您的应用,那么您的应用将无法运行

如果运行iOS8,将NSLocationWhenInUseUsageDescription添加到.plist文件中也很重要.

截图:

《ios – 在Swift代码中没有调用CLLocationManagerDelegate方法》

点赞