停止从不同的View Controller更新位置

时间:2018-03-01 11:22:06

标签: swift xcode location locationmanager

我已经实现了一个代码,它开始更新用户位置,然后呈现不同的视图。

self.manager.startUpdatingLocation(interval: 4) self.present(viewController, animated: true , completion: nil)

然后当我试图停止更新位置时,我的应用程序仍在打印坐标。

是否有任何代码可以从整个应用中禁用位置管理器?然后,如果我想再次开始,我想使用相同的代码行

我尝试的事情:

 func stopLocation (){
    DispatchQueue.main.async {
        self.locationManager.stopUpdatingLocation()
        self.manager.stopUpdatingLocation()

    }
}

self.manager.stopUpdatingLocation()

1 个答案:

答案 0 :(得分:1)

您的问题是,您为每个视图控制器创建了经理/位置管理器的不同副本。您需要一个视图控制器与之通信的单个对象来控制应用程序对位置管理器的使用。

这是单例设计模式的一个很好的用例。使您的Manager类成为单例,然后使用该单个实例来管理您的位置管理器状态。

电话可能如下:

Manager.shared.stopUpdatingLocation()

你应该能够使用Google`Swift singleton模式"了解它。在线有几十个和几十个代码示例。