我正在开发一个带有选项卡视图控制器和两个互补视图的 iOS 应用程序。其中之一使用 CoreLocation API 来获取当前速度,因此,它使用大量电池。
我知道:
[locationManager stopUpdatingLocation];
我可以停止速度更新,但我想在用户更改视图时执行此操作。
这可能吗?
我正在开发一个带有选项卡视图控制器和两个互补视图的 iOS 应用程序。其中之一使用 CoreLocation API 来获取当前速度,因此,它使用大量电池。
我知道:
[locationManager stopUpdatingLocation];
我可以停止速度更新,但我想在用户更改视图时执行此操作。
这可能吗?
将此添加到您要更新位置的选项卡项的 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 出现时,位置管理器会在消失时启动和停止。
只需添加这个[locationManager stopUpdatingLocation];
,当执行更改页面的操作时。
您需要实现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;
}