2015-11-06 3 views
0

В моем приложении класса делегата, я заявляю locaitonManager:Доступ locaitonManager из обоего AppDelegate и ViewController

var locationManager: CLLocationManager?

Позже в моем приложении в одном из классов вида контроллера, мне нужно, чтобы остановить обновления местоположения:

locationManager?.stopUpdatingLocation()

Но я получаю сообщение об ошибке:

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

поскольку диспетчер просмотра не может получить доступ к менеджеру местоположений, объявленному в классе делегатов приложения. Каков мой простой выход? Я должен иметь доступ к locationManager в делегате приложения.

Примечание: Как ни странно, мой func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) находится внутри контроллера зрения тоже, и это, кажется, работает нормально.

+2

Метод делегата будет вызываться на контроллере представления, если вы установили контроллер представления в качестве делегата. Вы можете получить ссылку на делегат приложения, используя 'UIApplication.sharedApplication(). Delegate' – Paulw11

+0

Приятно, я попробую это, когда вернусь к этому проекту. – Kashif

ответ

2

Чтобы ответить на мой собственный вопрос для дальнейшего использования:

В классе ViewController в:

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

Тогда позже в коде я могу обратиться к locationManager заявил в App Делегат как это:

appDelegate.locationManager!.requestAlwaysAuthorization() 

Надеюсь, это поможет другим.

+0

Swift 3: let appDelegate = UIApplication.shared.delegate as! AppDelegate –

Смежные вопросы