加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读