Swift:LocationManager在不同的类中
发布时间:2020-12-14 04:32:56 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个LocationManager类来处理所有的GPS数据.我需要多个视图控制器中的GPS数据.问题是函数被调用但我没有得到坐标.我在状态栏中看到了GPS图标,但几秒后就消失了. GPSTrackerManager.swift class GPSTrackingManager: NSObject,CLLocationManage
我正在尝试创建一个LocationManager类来处理所有的GPS数据.我需要多个视图控制器中的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方法完成后声明它将立即消失的方式,因为它的范围是方法的本地范围.您需要跟踪视图控制器的属性,以便它可以保持:
class ViewController: UIViewController { var tracking = GPSTrackingManager() override func viewDidLoad() { super.viewDidLoad() // ... tracking.startTracking() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |