我正在开发一个带有Tab View Controller和两个互补视图的iOS应用程序。 其中一个使用CoreLocation API来获得当前速度,因此,它使用了大量电池。
我知道:
[locationManager stopUpdatingLocation];
我可以停止速度更新,但我希望在用户更改视图时执行此操作。
这可能吗?
答案 0 :(得分: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出现时,位置管理器会在启动时停止,并在消失时停止 强>
答案 1 :(得分:0)
在执行更改页面的操作时,只需添加此[locationManager stopUpdatingLocation];
即可。
答案 2 :(得分: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;
}