【问题标题】:When/where to startUpdatingLocation?何时/何地开始更新位置?
【发布时间】:2011-04-23 21:12:53
【问题描述】:

位置的确定需要一些时间。应在何时何地启动位置管理器?

现在我在加载结果视图(需要位置)之前开始位置更新一个视图。如果用户快速点击,我会得到 0.0 个坐标。

为了获得正确的时机,startUpdatingLocation 应该在结果视图之前调用三个视图。这里的问题是我必须通过这三个视图控制器传递值。

接下来我需要在另一个视图中(不是上面提到的视图)中的位置。我想我会创建一个自己的位置监听器类。但是这个类什么时候实例化,坐标(经度,纬度)通过呢?协议对我没有帮助,因为只有创建我的位置侦听器的类才能获得结果。

我读了一下,想出了以下可能的解决方案:

1) 通知中心的使用(见this solution

2) 在AppDelegate中创建我的位置管理器的属性

在 1) 我会遇到需要结果的视图之前不会创建的问题。

2) 的实现会是什么样子?我在应用程序委托中创建位置管理器的实例,然后访问一些 ivars,例如 AppDelegate? 的纬度/经度?如果我采用here 描述的解决方案,我将不得不每次都实施CLLocationManagerDelegate。开设一堂课不是更好吗?

也许你有第三种解决方案?

【问题讨论】:

    标签: iphone cocoa-touch timing cllocationmanager core-location


    【解决方案1】:

    第三种解决方案可能是使用单例类,您可以将位置的纬度和经度存储在 CLLocationCoordinate2D 中。然后,您可以使用以下代码从项目中的任何视图访问存储的坐标

    DataController* dataController = [DataController sharedDataController];
    CLLocationCoordinate2D currentLocationCoordinate = dataController.coordinate;
    

    【讨论】:

    • 位置在应用程序启动时确定(在AppDelegate)。我创建了一个实例化CLLocationManager 的单例。现在只能创建一个位置管理器实例,并且位置数据始终可用。什么时候?在应用程序启动时。在哪里?在AppDelegate.
    • AppDelegate 也是一个单例类,我个人喜欢创建一个自己的单例类来存储应用程序数据。我很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2023-01-24
    相关资源
    最近更新 更多