2015-06-03 68 views
1

我有一個基於位置的應用程序在swift中運行。我正在嘗試檢測self.locationManager.startUpdatingLocation()目前是否處於活動狀態。找出如果statUpdatingLocation在Swift中處於活動狀態

我正在努力尋找如何做到這一點,也不能在互聯網上找到關於它的很多。我相當確信這很容易實現。我不想設置BOOL,因爲這需要是全局的。

if CLLocationManager.locationServicesEnabled() && /* START UPDATE LOCATION GOES HERE */ { 

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

     //self.locationManager.startMonitoringSignificantLocationChanges() 

     sender.setTitle("END DAY", forState: UIControlState.Normal) 

    } else { 


    } 
+0

您是否有興趣startMonitoringSignificantLocationChanges或startUpdatingLocation? – matt

+0

它的重要或一般性更新應該無關緊要,因爲它們確實共享相同的委託。 – Allreadyhome

+0

「應該無關緊要,因爲它們的重要性或一般性更新,因爲它們確實共享同一個委託」當編程框架時,生命不是「不應該」和「肯定」。這是關於「是」。沒有用的願望是不同的;你必須考慮事情是怎麼樣的。當然它有所不同。它們是完全不同的更新;他們獨立運作。 – matt

回答

2

我知道這是一個遲到的答案。但是如果你想知道locationManager是否正在更新,這可能是一個解決方案。

在您的應用中應該只有一個CLLocationManager實例。所以創建一個Singleton是理想的。然後,您應該覆蓋方法startUpdatingLocationstopUpdatingLocation

(SWIFT 3)

import CoreLocation 

class LocationManager: CLLocationManager { 
    var isUpdatingLocation = false 

    static let shared = LocationManager() 

    override func startUpdatingLocation() { 
     super.startUpdatingLocation() 

     isUpdatingLocation = true 
    } 

    override func stopUpdatingLocation() { 
     super.stopUpdatingLocation() 

     isUpdatingLocation = false 
    } 
} 

用法:

if LocationManager.shared.isUpdatingLocation { 
    print("Is currently updating location.") 
    } else { 
    print("Location updates have stopped.") 
    } 
+0

這就是我最終做的事情,但對於任何絆倒這個人的人來說都會很方便。 – Allreadyhome

-1

不能知道startUpdatingLocation()是「激活」,因爲你是一個誰說

如果你需要跟蹤這從其他地方,做一個布爾屬性,並將其設置爲true當你調用startUpdatingLocation()false當你調用stopUpdatingLocation()

+0

這裏的實際示例:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch22p773location/ch35p1032location/ViewController.swift(我的代碼中的屬性是稱爲「嘗試」)。 – matt

+0

我不完全理解你的第一段評論tbh。如果位置跟蹤處於活動狀態,肯定必須有沒有BOOL的檢查方式?如上所述,我最好不要BOOL,因爲這是整個應用程序的後臺操作。有沒有一個屬性,我可以檢查'startUpdatingLocation'例如'如果locationManager.isUpdating {'...... – Allreadyhome

+0

你只是讓我重複自己。不,沒有'locationManager.isUpdating'。如果有的話,你會知道的。沒有_need_是一個,因爲它不會更新,除非你開始更新。 – matt

相關問題