gpt4 book ai didi

Swift:不同类中的 LocationManager

转载 作者:搜寻专家 更新时间:2023-10-31 08:34:26 26 4
gpt4 key购买 nike

我正在尝试创建一个 LocationManager 类来处理所有 GPS 数据。我需要多个 View Controller 中的 GPS 数据。问题是调用了该函数,但我没有取回坐标。我在状态栏中看到 GPS 图标,但它在几秒钟后消失了。

GPSTrackerManager.swift

class GPSTrackingManager: NSObject, CLLocationManagerDelegate {

var locationManager: CLLocationManager!
var seenError : Bool = false

func startTracking() {

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

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
locationManager.stopUpdatingLocation()
if ((error) != nil) {
if (seenError == false) {
seenError = true
print(error)
}
}
}

func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]) {
//println("locations = \(locationManager)")
var latValue = locationManager.location.coordinate.latitude
var lonValue = locationManager.location.coordinate.longitude

println(latValue)
println(lonValue)

}
}

我如何在我的 VC 中的 ViewDidLoad 中调用它:

var tracking = GPSTrackingManager()
tracking.startTracking()

最佳答案

您声明它会在您的 viewDidLoad 方法完成后立即消失的方式,因为它的范围是该方法的本地范围。您需要使 tracking 成为您的 View Controller 的一个属性,这样它就会一直存在:

class ViewController: UIViewController {
var tracking = GPSTrackingManager()

override func viewDidLoad() {
super.viewDidLoad()
// ...
tracking.startTracking()
}
}

关于Swift:不同类中的 LocationManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com