1

enter image description here

I am working on a sport project at the moment. What i want to do is, when users select the AutoPause switch on, the CLLocationManager will pause updating location when speed is below a certain level. Basically, i have figure out how to implement the locationManager by changes its attribute, but my question is, how can I set CLLocationManager's attribute from the settingViewController, whereas the CLLocationManager instance is in another ViewController. Thanks in advance.

jignesh Vadadoriya
  • 3,244
  • 3
  • 18
  • 29
Nan
  • 496
  • 3
  • 21
  • Put the `CLLocationManager` in a singleton ? – Larme Nov 28 '16 at 09:19
  • @Larme I have put it in a singleton but I just can't figure out the approach for changing its attribute from another View Controller – Nan Nov 28 '16 at 09:20
  • Add a method `-(void)updateLocaltionManagerTargetAttributeSetting:(id)setting`, and do `[[YourSingletonClass sharedManager] updateLocaltionManagerTargetAttributeSetting:something]`? – Larme Nov 28 '16 at 09:57

2 Answers2

1

You can use NSNotificationCenter to send notification to enable/ disable the CLLocationManager's autopause attribute in another View Controller.

Other approaches can be:

  1. Use class method, it is explained very well in this SO Answer

  2. Use Delegates

Community
  • 1
  • 1
Arpit Dongre
  • 1,683
  • 19
  • 30
0

idk what' your problem with CLLocationManager, do you mean the way to pass object to another view controller? there are several way to do this.See this question:Passing Data between View Controllers I'm pretty sure that you can pass the CLLocationManager object to settingViewController by setting a property of that CLLocationManager,because passing the object means pass the reference the object,you can change the object in settingViewController life cycle,and it affects the CLLocationManager object which created by ViewController.

Community
  • 1
  • 1
Chaolong_Liao
  • 246
  • 1
  • 7
  • My problem is, how can i disable/enable CLLocationManager's autopause attribute from View Controller B, as CLLocationManager's instance was inited in View Controller A. – Nan Nov 28 '16 at 09:26
  • 1
    pass the object to another view controller by setting property would be easy,if you using storyboard for transitions, pass the object by segue.see the article on the link plz. – Chaolong_Liao Nov 28 '16 at 09:42
  • Cheers, i think the approach includes pass object and notification, which one do you think is better. – Nan Nov 30 '16 at 05:26