2014-09-29 22 views
4

我正在嘗試創建一個LocationManager類來處理所有GPS數據。我需要多個視圖控制器中的GPS數據。問題是函數被調用,但我沒有得到座標。我在狀態欄中看到GPS圖標,但幾秒後它就會消失。Swift:不同類中的LocationManager

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

回答

3

你宣佈它會消失你viewDidLoad法結束後正確的,因爲它的範圍是本地方法的方式。你需要使tracking屬於你的視圖控制器,所以它會堅持:

class ViewController: UIViewController { 
    var tracking = GPSTrackingManager() 

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

哇,這是愚蠢的,我沒有看到。現在正在工作,謝謝! – EricDXS 2014-09-29 15:27:36

相關問題