【发布时间】:2015-11-30 11:32:54
【问题描述】:
我有两个视图(一个表,一个集合)。在每个视图的单元格中,都有一个按钮,当点击该按钮时,应该获取用户的当前位置并将其传递给一个变量,以便在深度链接中使用。
我可以通过在两个视图中实现CoreLocation 来实现这一点,但我试图坚持 DRY 并因此编写一个类或在 AppDelegate 一次中实现它,并在用户按下时调用它来自任一视图的单元格的按钮。
我看到过类似的问题,建议使用单例模式,或者使用NSNotificationCenter 并观察何时按下按钮。
对于这种情况下的最佳实施有什么想法吗?
【问题讨论】:
-
最简单的方法就是在你的应用委托中实现位置管理器,并让它为当前位置公开一个属性。只需从
didUpdateLocations委托方法更新此属性。一个稍微“干净”的方法是创建另一个对象来服务这个角色,在应用程序委托中分配它并将它传递给视图控制器(或者如果你必须使用单例) -
@Paulw11 thx for answer.. 我在 AppDelegate 中实现了 CLLocationManager,并创建了一个函数来获取用户的当前位置 - 然后填充 currentLocation 的属性。但是,如果我在另一个视图中实例化 AppDelegate,我将无法访问我编写的函数。我想我没有正确地做到这一点。有什么想法吗?
-
appDelegate 是一个单例。不要实例化它。使用
UIApplication.sharedApplicatiin.delegate获取参考
标签: ios swift oop architecture core-location