1

我正在开发一个带有选项卡视图控制器和两个互补视图的 iOS 应用程序。其中之一使用 CoreLocation API 来获取当前速度,因此,它使用大量电池。

我知道:

[locationManager stopUpdatingLocation];

我可以停止速度更新,但我想在用户更改视图时执行此操作。

这可能吗?

4

3 回答 3

2

将此添加到您要更新位置的选项卡项的 ViewController

- (void)viewWillAppear:(BOOL)animated {    

    // Start location manager
    [locationManager startUpdatingLocation];

    [super viewWillAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated {

    // Stop location manager
    [locationManager stopUpdatingLocation];

    [super viewWillDisappear:animated];
}

当您的 ViewController 出现时,位置管理器会在消失时启动和停止。

于 2013-04-19T12:07:23.330 回答
0

只需添加这个[locationManager stopUpdatingLocation];,当执行更改页面的操作时。

于 2013-04-19T12:02:05.963 回答
0

您需要实现UITabbarController. 然后你得到:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

你可以返回 YES 并停止 locationManager


- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    tabBarController.delegate = self; //you need an iboutlet to get the tabbar
    [window addSubview:tabBarController.view];
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 
{
    if([viewController respondsToSelector:@selector(locationManager)])
        [[viewController locationManager] stopUpdatingLocation]; //your viewController needs to expose the locationManager as a property
    return YES;
}
于 2013-04-19T12:10:27.860 回答