位置管理器未在外部更新 ViewController

Location Manager Not Updating Outside ViewController

我知道之前有人问过这个问题,但检查这些问题并没有解决我的问题。

我的 ViewController 处理 CoreLocation 并且有自己的位置管理器。效果很好,获取位置。

ViewController 调用另一个名为 FootPath 的 class,这也需要它自己的位置管理器。

我知道位置管理器的单例方法,但现在我必须做很多 re-structuring 所以这不是一个选择。

FootPath 的 init 方法:

init(motionManager: CMMotionManager, expectedNavigationPattern: [StepDirection]) {
    self.expectedNavigationPattern = expectedNavigationPattern
    self.motionManager = motionManager

    super.init()

    self.locationManager = CLLocationManager()
    self.locationManager.delegate = self
    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.distanceFilter = 1
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
    self.locationManager.startUpdatingHeading()
}

FootPath 创建自己的位置管理器。我可以在调试时看到它已分配。但是标题没有更新。

Footpath也符合CLLocationManagerDelegate.

这曾经有效,我检查了 back-up 并且它正在更新标题。虽然我找不到区别。我通过 FileMerge.

查找

我还尝试了 FootPath classes 位置管理器分配在调度 queue 中定位主要 queue 或重新启动设备,但它没有改变。

有什么想法吗?

首先,我不确定此解决方案能否解决您的问题。但只需尝试删除 FooPathViewController class 中的位置管理器初始化并创建位置管理器 constant 到您的 AppDelegate 并从您的 class.

获取此 locationManager

您可以像这样在 AppDelegate 中创建 locationManager;

let locationManager = CLLocationManager()

之后,您可以在 自定义 class 中使用初始化的 locationManager。

private let locationManager = AppDelegate().locationManager

试试这个,如果有效请告诉我。