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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了停止从不同的View Controller更新位置相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

电话可能看起来像:

Manager.shared.stopUpdatingLocation()

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

以上是关于停止从不同的View Controller更新位置的主要内容,如果未能解决你的问题,请参考以下文章

UIView.animate with repeat 选项在新的 View Controller 出现时停止

MVC 系统是如何工作的?

开发模式总结:MVCMVP&MVVM

Pager View Controller 的根视图的大小与后续 View Controller 的大小不同

警告:尝试在已呈现的*上显示View Controller

使用委托将数据从 Collection View Controller 传递到 View Controller