2010-10-11 32 views
2

确定位置需要一些时间。位置管理员何时何地开始工作?何时/何处startUpdatingLocation?

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

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

接下来的事情是我需要的位置也在另一个视图(而不是上面提到的意见)。我想我会创建一个自己的位置监听器类。但是什么时候这个类被实例化并且坐标(经度,纬度)通过?一个协议不能帮助我,因为只有创建我的位置监听器的类才会返回结果。

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

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

2)AppDelegate

创建我的位置管理器的属性

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

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

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

回答

1

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

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

该位置在app的开头(AppDelegate')中确定。我创建了一个实例化CLLocationManager的单例。现在只能创建一个位置管理器实例,并且位置数据始终可用。什么时候?在应用程序的开始。哪里?在'AppDelegate'中。 – testing 2010-10-12 11:18:01

+0

AppDelegate也是一个单例类,我个人喜欢创建一个我自己的单例类来存储应用程序数据。我很高兴能够提供帮助。 – Jeroen 2010-10-13 13:17:33

+0

什么是DataController在这里? – Mann 2011-09-14 22:12:22