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

问题描述 投票:0回答:1

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

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()

swift xcode location locationmanager
1个回答
1
投票

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

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

电话可能看起来像:

Manager.shared.stopUpdatingLocation()

你应该能够谷歌`Swift单例模式“来了解它。在线有几十个和几十个代码示例。

© www.soinside.com 2019 - 2024. All rights reserved.