如何在所有应用程序上接收重要的位置更改而不是仅一个视图?

时间:2012-06-26 09:25:10

标签: iphone ios uiview cllocationmanager uiapplication

我是iOS编程的新手,我需要实现一个位置感知应用程序。我已经可以使用重要的位置更改服务,但是当我离开我的视图时,它会停止接收新的更新。

如果我在该视图中输入背景,我仍然可以获得更新,一切都很好,但如果我将视图更改为其他视图则停止...

我认为以这种方式发生是合乎逻辑的,但我还需要接收其他观点的更新......

我应该为我拥有的每个视图复制代码,还是可以创建我以任何视图接收更新,比如使我的应用程序回答而不是每个视图。

谢谢, GustDD

2 个答案:

答案 0 :(得分:1)

你可以:

  1. 在应用程序委托中定义位置实例,以便您随时可以访问它。

  2. 使用NSNotificationCenter在位置更改时发布通知。

  3. 使用代理人在位置更改时传递信息。

答案 1 :(得分:1)

在AppDelegate.m

中添加此代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:  (NSDictionary *)launchOptions
 {
    if(!locationManager) {
         locationManager = [[CLLocationManager alloc] init];
         locationManager.delegate = self; 
         locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
         locationManager.distanceFilter = kCLDistanceFilterNone;
         [locationManager startUpdatingLocation];
       }
 }

 - (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation  *)newLocation fromLocation:(CLLocation *)oldLocation {
//here you will get upadated location
    //here you can add delegate method call to where you want to use this location or you can create a shared variable

}