如何从不同的视图调用CoreLocation

时间:2015-11-03 19:48:18

标签: ios swift oop architecture core-location

我有两个视图(一个表,一个集合)。在每个View的Cell中,有一个按钮,当被点击时应获取用户的当前位置并将其传递给要在Deeplink中使用的变量。

我可以通过在两个视图中实现CoreLocation来实现这一目标,但我尝试遵循DRY并因此编写一个类或在AppDelegate中实现它一次,并在用户时调用它从View的Cell中按下按钮。

我已经看过类似的问题,建议使用Singleton模式,或使用NSNotificationCenter并观察按下按钮的时间。

在这种情况下是否有最佳实施的想法?

1 个答案:

答案 0 :(得分:0)

基本上,你想要这样的东西:

final class UserLocationFinder: NSObject, CLLocationManagerDelegate {

    static let instance = UserLocationFinder()
    var currentLocation: CLLocation?
    // implement the code necessary to get the user's location and
    //   assign it to currentLocation 
}

然后在需要知道当前位置的代码中,您可以:

if let currentLocation = UserLocationFinder.instance.currentLocation {
    // the current location is known

这样你就满足了DRY,因为代码只在这一个类中,并且你满足单一责任原则(SRP),因为你不会因为额外的职责而重载AppDelegate ......