Kashif Kashif - 7 months ago 16
Swift Question

Accessing locaitonManager from both AppDelegate and ViewController

In my app delegate class, I am declaring locaitonManager:

var locationManager: CLLocationManager?


Later in my app inside one of the view controller classes, I need to stop location updates:

locationManager?.stopUpdatingLocation()


But I get error:


Value of type CLLocation Manager.... has no member ....


because view controller cannot access the location manager declared inside app delegate class. What is my simple way out? I have to have locationManager access in app delegate.

Note: Strangely, my
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])

is inside the view controller too, and it seems to be working fine.

Answer

To answer my own question for future reference:

In ViewController's class:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

Then later in the code I am able to refer to the locationManager declared in App Delegate like this:

appDelegate.locationManager!.requestAlwaysAuthorization()

Hope this helps others.